Node.js 应用程序在本地主机上运行良好,但在 Heroku 上部署时显示错误
Posted
技术标签:
【中文标题】Node.js 应用程序在本地主机上运行良好,但在 Heroku 上部署时显示错误【英文标题】:Node.js app runs well on local host but shows error when deployed on Heroku 【发布时间】:2020-08-01 02:23:50 【问题描述】:下面是我的 index.js 文件的代码。我使用猫鼬进行数据库连接。每次我尝试运行应用程序时,它都会在 get 方法中显示错误。进程因没有子进程的错误而终止。
`import express from 'express';
import mongoose from 'mongoose';
import bodyparser from 'body-parser';
import cors from 'cors';
import history from 'connect-history-api-fallback';
import routes from './routes/RecruitmentRoutes';
import routes1 from './routes/RecruitmentRoutes2';
import deleteRoutes from './routes/deleteRoutes'
var mongodb = require('mongodb');
var path = require('path');
const app = express();
//mongo connection
mongoose.Promise = global.Promise;
mongoose.connect('mongodb+srv://csci202:Olemiss@2020@cluster0-x0tez.mongodb.net/test?
retryWrites=true&w=majority',
useNewUrlParser:true,
useUnifiedTopology: true
).catch(err => console.log(err))
//bodyparser setup
app.use(bodyparser.urlencoded(extended:true))
app.use(bodyparser.json());
app.use(cors());
app.use(history(verbose:true))
const PORT = 4000;
routes(app);
routes1(app);
deleteRoutes(app);
app.use(express.static(path.join(__dirname,'build')));
app.get('/',(req,res)=>
res.sendFile(path.join(__dirname),'build','index.html');
res.redirect('/');
)
app.listen(PORT,()=>
console.log('Recruitment server running on port ')
)`
下面是错误截图。
【问题讨论】:
【参考方案1】:Heroku 中定义的端口存储在环境变量process.env.PORT
中。您需要更改代码才能使用它。如何?更改 PORT 变量声明,而不是这样:
const PORT = 4000;
使用这个:
const PORT = process.env.PORT || 4000
如果已定义(即在 Heroku 上)该行使用 process.env.PORT
环境变量,如果未定义(即在本地计算机上)则使用 4000
。
【讨论】:
以上是关于Node.js 应用程序在本地主机上运行良好,但在 Heroku 上部署时显示错误的主要内容,如果未能解决你的问题,请参考以下文章
Node.js,基于 socket-io 的一对一聊天引擎在本地运行良好,但在使用 ngrok 在不同笔记本电脑上运行时无法运行
Datatables 插件在本地主机上工作正常,但在服务器(CPanel)上不工作
如何在浏览器中访问远程 node.js 应用程序,而不是在本地主机上