{已解決}。新錯誤
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 前端(現(xiàn)在託管在 Netlifty 上) 使用 Express 和 MYSQL2 的 Javascript Node 後端(託管在 Heroku 上)
目標(biāo): 將 Neflifty 前端 POST 請求與 Heroku 後端連接,取得 POST 負(fù)載資料並將其插入 MYSQL 表中。
更新:2021 年 9 月 24 日
我已經(jīng)完成了所有建議的事情。我已經(jīng)使用clearDB 建立了一個新資料庫。新增它並在 mysql Workbench 中測試連接。建立了所需的表。更新了用於建立與新資料庫的連接的後端程式碼。檢查 Heroko 變數(shù)並確保它們正確反映到新資料庫中?,F(xiàn)在有一個授權(quán)問題。 {已解決}
經(jīng)過修正的新後端程式碼:
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 不會連接? {已回答}
新問題: 為什麼它應(yīng)該使用環(huán)境時卻嘗試使用連接埠 8000?為什麼會超時?
對此的任何幫助將不勝感激。
您無法連線到資料庫,因?yàn)?Heroku 上沒有執(zhí)行任何資料庫執(zhí)行個體。一旦您使用 Heroku CLI 推送程式碼,Heroku 就會為您設(shè)定一個 NodeJS 應(yīng)用程序,但這並不意味著它也會為您設(shè)定資料庫。
您可以透過 Heroku 的介面或 CLI 將資料庫新增至您的應(yīng)用程式。從 CLI(我們將設(shè)定 ClearDB,但任何 MySQL 資料庫外掛程式都可以工作):
heroku addons:create cleardb:ignite
完成之後,您想要新的資料庫 URL(不是 localhost):
heroku config | grep CLEARDB_DATABASE_URL
最後一個指令的輸出將類似於:
mysql://: @ / ?reconnect=true
現(xiàn)在,有了這個,您應(yīng)該使用新資訊稍微修改您的程式碼。您不想在版本控制中公開資料庫憑證,因此您可以使用環(huán)境變數(shù)來完成它:
const db = mysql.createConnection({ connectionaLimit: 50, user: process.env.DB_USER, host: process.env.DB_HOST, password: process.env.DB_PASSWORD, database: process.env.DATABASE, port: 3306 });
此外,您需要為正在運(yùn)行的 Heroku 應(yīng)用程式設(shè)定環(huán)境變數(shù):
heroku config:set DB_USER=heroku config:set DB_PASSWORD= heroku config:set DB_HOST= heroku config:set DATABASE=
現(xiàn)在,您有一個在 Heroku 上運(yùn)行的資料庫實(shí)例和一個可以連接到該資料庫的 NodeJS 應(yīng)用程式實(shí)例。
要進(jìn)一步閱讀,您可能想查看這些連結(jié):
https:// /lo-victoria.com/build-a-mysql-nodejs-crud-app-4-deploying-to-heroku-finale
#https://www.bezkoder.com/部署節(jié)點(diǎn)-js-app-heroku-cleardb-mysql/
#https://raddy.co.uk/blog/how-to-deploy-node-js-express-ejs-mysql-website-on-heroku-cleardb/(這個使用Heroku 的介面)