我在Heroku上运行一个nodejs express服务器。我在应用程序根目录中定义了一个 Procfile,其中包含:
web:node --optimize_for_size --max_old_space_size=460 --gc_interval=100 server.js
但是,当我使用heroku logs -a my-app --tail
时,我注意到我的应用程序开始使用npm start
它只是node server.js
而不是我放入Procfile的内容。这是日志:
2020-05-20T16:28:35.000000+00:00 app[api]: Build succeeded
2020-05-20T16:28:36.489864+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2020-05-20T16:28:36.575077+00:00 heroku[web.1]: Process exited with status 143
2020-05-20T16:28:37.695081+00:00 heroku[web.1]: Starting process with command `npm start`
2020-05-20T16:28:40.709631+00:00 app[web.1]:
2020-05-20T16:28:40.709647+00:00 app[web.1]: > my-app@0.0.1 start /app
2020-05-20T16:28:40.709648+00:00 app[web.1]: > node server.js
2020-05-20T16:28:40.709648+00:00 app[web.1]:
正如我从 Heroku 的文档中了解到的那样,只有在没有检测到Procfile
时才应使用npm start
。我在这里错过了什么?
问题是我的进程名称和Procfile
内的命令之间没有空格。这现在对我有用:
web: node --optimize_for_size --max_old_space_size=460 --gc_interval=100 server.js
以下是heroku logs
的日志输出:
2020-05-20T16:58:44.000000+00:00 app[api]: Build succeeded
2020-05-20T16:58:46.235387+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2020-05-20T16:58:46.360055+00:00 heroku[web.1]: Process exited with status 143
2020-05-20T16:58:47.111612+00:00 heroku[web.1]: Starting process with command `node --optimize_for_size --max_old_space_size=460 --gc_interval=100 server.js`