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 应用程序,而不是在本地主机上

PHP cURL 在本地主机上工作但在服务器上不工作

Mongodb atlas + node.js 在本地工作,但在推送到 Heroku 时停止

Heroku Node.js 应用程序在本地工作,但在部署时不工作