![](/img/trans.png)
[英]Deploying ReactJS app with NodeJS backend (using express) for server/database on heroku
[英]Deploying Nodejs Express js App on heroku
我正在嘗試在 heroku 上部署我的應用程序,但我總是收到此錯誤
2022-08-11T12:49:12.131468+00:00 app[web.1]: Error: connect ECONNREFUSED 127.0.0.1:3306
2022-08-11T12:49:12.131469+00:00 app[web.1]: at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1247:16) {
2022-08-11T12:49:12.131470+00:00 app[web.1]: errno: -111,
2022-08-11T12:49:12.131470+00:00 app[web.1]: code: 'ECONNREFUSED',
2022-08-11T12:49:12.131470+00:00 app[web.1]: syscall: 'connect',
2022-08-11T12:49:12.131471+00:00 app[web.1]: address: '127.0.0.1',
2022-08-11T12:49:12.131471+00:00 app[web.1]: port: 3306,
2022-08-11T12:49:12.131471+00:00 app[web.1]: fatal: true
2022-08-11T12:49:12.131472+00:00 app[web.1]: }
2022-08-11T12:49:12.131494+00:00 app[web.1]:
2022-08-11T12:49:12.131494+00:00 app[web.1]: Node.js v18.7.0
有人可以幫我解決這個問題嗎? 這是 server.js
const express = require('express')
const app = express()
app.set('view engine', 'ejs')
const filterByDateRouter = require('./routes/filterByDate');
const filterByLogsRouter = require('./routes/filterByLogs');
const mainPageRouter = require('./routes/index');
app.use("/filterByDate", filterByDateRouter)
app.use("/filterByLogs", filterByLogsRouter)
app.use("/",mainPageRouter)
app.use(express.static(__dirname + '/public/css'))
app.use(express.static(__dirname + '/public/js'))
app.listen(process.env.PORT || 3000)
這是數據庫連接:
var connection = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
connectionLimit:10,
database: process.env.DB_NAME,
});
我正在使用heroku中的clearMYSQL來部署我的數據庫,並且保存在.env中的所有字段都是正確的
您可以閱讀CLEARDB_DATABASE_URL
並對其進行解析:
const url = new URL(process.env.CLEARDB_DATABASE_URL);
const host = url.hostname;
const port = url.port || 3306;
const user = url.username;
const password = url.password;
const database = url.pathname.substring(1);
const connection = mysql.createPool({
host,
user,
password,
connectionLimit:10,
database,
port
});
您正在嘗試連接到127.0.0.1
,而 heroku 不在同一個容器上托管數據庫。 查看 heroku 文檔,您需要從配置中獲取主機,方法是:
heroku config | grep CLEARDB_DATABASE_URL
這將返回一個mysql://
-url,您應該將其添加為變量。 這也在文檔中進行了描述,並且可以通過以下方式實現:
heroku config:set DATABASE_URL='<result-of-first-command>'
更多信息可在此處獲得。
您還可以添加托管服務提供商提供的環境變量。 您還可以通過設置>配置變量在 heroku 中添加環境變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.