【问题标题】:Why is Heroku not detecting my start script?为什么 Heroku 没有检测到我的启动脚本?
【发布时间】:2019-01-07 06:38:50
【问题描述】:

我在 Heroku 上有一个 Node.js 应用程序。要启动它,我需要执行 index.js。为此,我添加了一个带有 start 脚本的 package.json 文件。

正如我在Heroku Node.js Support 中看到的:

首先,Heroku 查找指定进程类型的 Procfile。

如果在构建过程中您的应用程序的根目录中没有 Procfile,您的 Web 进程将通过运行 npm start 启动,您可以在 package.json 中指定一个脚本...

当我将 start 脚本定义为 node index.js 并将我的应用程序部署到 Heroku 时,我在资源选项卡中看不到任何 Dynos。


我的代码:

package.json

{
    "name": "node.js app",
    "version": "1.4.0",
    "description": "A node.js app.",
    "main": "index.js",
    "repository": {
        "type": "git",
        "url": "Node.js repository"
    },
    "author": "Realex78",
    "license": "MPL-2.0",
    "dependencies": {
        "npm package": "^1.0.0"
    },
    "devDependencies": {
        "npm package": "^1.0.0"
    },
    "scripts": {
        "start": "node index.js",
        "poststart": "node scripts/poststart.js",
        "restart": "node scripts/restart.js"
    }
}

【问题讨论】:

  • 您在repository" 上缺少引号
  • @MarkMeyer 谢谢,我修好了。 (显然在编辑时我删除了引号)
  • heroku logs 有没有说什么?
  • 当你部署到 heroku 时,stdout 是否包含错误? “heroku 日志”应该会产生一些痕迹。在本地你可以“heroku local”或“npm run start”让它运行吗?
  • 您找到解决方案了吗?我也面临同样的问题。

标签: node.js heroku package.json


【解决方案1】:

确保您没有使用 Procfile,因为 Heroku gives it priority over package.json!

即即使我在 package.json 中更新了我的启动脚本:

  "scripts": {
    "start": "node --harmony server.js"
  },

我忘记了我的 Procfile 是这样设置的:

web: node server.js

因此我在 package.json 中的启动脚本被忽略了!解决方法是更新我的 Procfile(在这种情况下包括 --harmony 参数)。
请注意,我不必等待 24 小时才能成功部署;它立即起作用。

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2021-06-24
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多