无法在Heroku上启动节点服务器

时间:2019-08-28 19:57:07

标签: node.js heroku

我有一个几乎是普通的create-react-app(v2)应用程序,该应用程序已连接到Express服务器,该服务器充当API服务器并被代理。在本地运行npm run dev,因为我的包json脚本部分如下所示:

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "server": "node server --exec nodemon",
    "heroku-postbuild": "npm install && npm install --only=dev --no-shrinkwrap && npm run build",
    "dev": "run-p server start"
  },

但是,如果我使用web: npm run dev创建一个Procfile,这在Heroku上将不起作用,因为它告诉我找不到run-p。因此,我改为web: node server/index.js(因为我的服务器文件位于server/index.js。但是,这在Heroku日志中给了我以下错误:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

我认为启动服务器可以满足所有要求,因为它具有以下一行:

if (process.env.NODE_ENV === 'production') {
  const path = require('path');
  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, '../build', 'index.html'));
  });
}
app.listen(3001, () => console.log('Listening on localhost:3001'));

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

在app.listen之前添加此内容:

app.set('port', (process.env.PORT || 3001));

然后在app.listen中添加3000:

app.listen(app.get('port'), () => console.log('Listening on localhost:3001'));

这应该在本地相同。