由于硬编码的端口号,将node.js应用程序部署到heroku时遇到问题

kev*_*lin 4 heroku node.js

我无法将角度种子应用程序(https://github.com/angular/angular-seed)部署到Heroku.我相信问题是当heroku需要通过process.env.PORT变量动态分配端口时,端口号被硬编码到服务器启动脚本中.通过heroku日志查看确认:Starting up http-server, serving ./ on port: 8000.我的Procfile包含web: npm start,我的package.json文件包含

"scripts": {
  "prestart": "npm install",
  "start": "http-server -a localhost -p 8000"
}
Run Code Online (Sandbox Code Playgroud)

我如何更改它,以便我的服务器仍然可以在本地开发环境中正常工作foreman start,但是在使用heroku时动态分配端口?我想要它,以便当我键入foreman start我的本地开发环境时,将在localhost:8000创建一个服务器,但是当我将应用程序部署到heroku时,该端口将由Heroku选择.

Jon*_*joy 5

我不是Node开发人员,但为什么不在start脚本中使用Heroku配置的PORT编号?

即. "start": "http-server -a localhost -p $PORT"

然后它将在Heroku上运行.如果您在本地运行,只是运行export PORT=8000,或者如果您正在使用,则将其放入PORT=8000您的.env文件中foreman,并且您很高兴.

您还可以添加可能bash的魔法;如果没有通过更换设置设置端口$PORT${PORT-8000}.

(未测试)

  • 为什么这不是公认的答案? (2认同)