{已解決}。新錯誤
Heroku 日誌錯誤:
Error: connect ECONNREFUSED 127.0.0.1:3306 2021-09-23T18:24:12.236657+00:00 app[web.1]: at TCPConnectWrap.afterConnect. [as oncomplete] (node:net:1146:16) { 2021-09-23T18:24:12.236658+00:00 app[web.1]: errno: -111, 2021-09-23T18:24:12.236658+00:00 app[web.1]: code: 'ECONNREFUSED', 2021-09-23T18:24:12.236658+00:00 app[web.1]: syscall: 'connect', 2021-09-23T18:24:12.236659+00:00 app[web.1]: address: '127.0.0.1', 2021-09-23T18:24:12.236659+00:00 app[web.1]: port: 3306, 2021-09-23T18:24:12.236659+00:00 app[web.1]: fatal: true
訊息/背景:
React js 前端(現在託管在 Netlifty 上) 使用 Express 和 MYSQL2 的 Javascript Node 後端(託管在 Heroku 上)
目標: 將 Neflifty 前端 POST 請求與 Heroku 後端連接,取得 POST 負載資料並將其插入 MYSQL 表中。
更新:2021 年 9 月 24 日
我已經完成了所有建議的事情。我已經使用clearDB 建立了一個新資料庫。新增它並在 mysql Workbench 中測試連接。建立了所需的表。更新了用於建立與新資料庫的連接的後端程式碼。檢查 Heroko 變數並確保它們正確反映到新資料庫中。現在有一個授權問題。 {已解決}
經過修正的新後端程式碼:
const express = require('express'); const app = express(); const port = process.env.Port || 8000 app.list en(port); console.log(`server is listing on ${port}`);超時
問題: 如果這在工作台上本地連接,如果將它們添加為變量,為什麼 Heroku 不會連接? {已回答}
新問題: 為什麼它應該使用環境時卻嘗試使用連接埠 8000?為什麼會超時?
對此的任何幫助將不勝感激。
您無法連線到資料庫,因為 Heroku 上沒有執行任何資料庫執行個體。一旦您使用 Heroku CLI 推送程式碼,Heroku 就會為您設定一個 NodeJS 應用程序,但這並不意味著它也會為您設定資料庫。
您可以透過 Heroku 的介面或 CLI 將資料庫新增至您的應用程式。從 CLI(我們將設定 ClearDB,但任何 MySQL 資料庫外掛程式都可以工作):
完成之後,您想要新的資料庫 URL(不是 localhost):
最後一個指令的輸出將類似於:
現在,有了這個,您應該使用新資訊稍微修改您的程式碼。您不想在版本控制中公開資料庫憑證,因此您可以使用環境變數來完成它:
此外,您需要為正在運行的 Heroku 應用程式設定環境變數:
現在,您有一個在 Heroku 上運行的資料庫實例和一個可以連接到該資料庫的 NodeJS 應用程式實例。
要進一步閱讀,您可能想查看這些連結:
https:// /lo-victoria.com/build-a-mysql-nodejs-crud-app-4-deploying-to-heroku-finale
#https://www.bezkoder.com/部署節點-js-app-heroku-cleardb-mysql/
#https://raddy.co.uk/blog/how-to-deploy-node-js-express-ejs-mysql-website-on-heroku-cleardb/(這個使用Heroku 的介面)