【问题标题】:Heroku bash: node: command not foundHeroku bash:节点:找不到命令
【发布时间】:2012-10-08 05:28:31
【问题描述】:

以前在 Heroku 上启动节点应用程序时,是否有人遇到此错误?

2012-10-17T20:28:52+00:00 heroku[web.1]: Starting process with command `node app.js`
2012-10-17T20:28:53+00:00 app[web.1]: bash: node: command not found

似乎 Heroku 应用缺少节点。

应用程序在本地启动得很好。 foreman start 和 node app.js 都有。

{
    "name": "app-name",
    "description": "some desc",
    "version": "0.0.1",
    "private": true,
    "engines": {
        "node": "0.8.12",
        "npm":  "1.1.49"
    },
    "dependencies": {
        "express" : "2.5.9",
        "mongoose" : ">=2.6.0",
        "colibri" : "*",
        "jade": ">= 0.0.1"
    }
}

【问题讨论】:

  • 当我尝试“heroku run node”时,我得到同样的错误“bash: node: command not found”
  • 有解决办法吗?
  • 如果您正在使用除 master/main 之外的分支,在运行节点命令之前,请使用 git push heroku dev:main (dev 是分支名称)

标签: node.js heroku express mongoose


【解决方案1】:

为我解决的问题是在 heroku 设置中添加 heroku/nodejs buildpack。

【讨论】:

    【解决方案2】:

    老问题,但是,尝试将engines 部分添加到您的package.json

    "engines": {
        "node": ">= 6.9.4",
        "npm": ">= 4.4.0"
      }
    

    【讨论】:

    • 这个答案拯救了我的周末。
    【解决方案3】:

    首先,确保您的应用程序使用的是 heroku/nodejs 构建包:

    $ heroku buildpacks

    1. heroku/nodejs

    如果不是这种情况,请使用以下命令将您的 builpack 更改为 nodejs:

    $ heroku buildpacks: 设置 heroku/nodejs

    Image of terminal

    【讨论】:

    • 请勿贴代码或日志截图,直接复制到你的帖子中。
    • 谢谢,这为我节省了大量工作。我在一个存储库中使用 Python 和 Node,显然它只注册了 Python
    【解决方案4】:

    Heroku 通过 package.json 的存在将应用识别为 Node.js。即使您的应用没有依赖项,您仍然应该创建一个 package.json 来声明名称、版本和空依赖项,以便它显示为 Node 应用程序。

    https://devcenter.heroku.com/articles/nodejs

    【讨论】:

    • 我已经有一个 package.json。用它编辑了我原来的问题。
    【解决方案5】:

    tl;dr:遇到同样的问题,heroku restart 为我工作。


    长版:是这样的:

    1. heroku logs我看到了:

      heroku[slugc]: Slug compilation finished  
      heroku[web.1]: Starting process with command `node app.js`  
      app[web.1]: bash: node: command not found  
      heroku[web.1]: Process exited with status 127  
      heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path=/ host=node-network.herokuapp.com fwd=70.28.80.4 dyno= queue= wait= connect= service= status=503 bytes=
      heroku[web.1]: State changed from starting to down
      
    2. 所以我跑了heroku restart,得到了:

      heroku[web.1]: State changed from down to starting
      heroku[web.1]: Starting process with command `node app.js`
      app[web.1]: Listening on port 30693
      heroku[web.1]: State changed from starting to up
      

    【讨论】:

      【解决方案6】:

      解决我的问题是删除 package.json.lock。 我有我的 yarn.lock 和 package.json.lock。

      显然,heroku 不喜欢那样。

      【讨论】:

        猜你喜欢
        • 2012-08-23
        • 2015-08-08
        • 2019-09-30
        • 2019-06-17
        • 1970-01-01
        • 1970-01-01
        • 2018-03-09
        • 2011-07-14
        • 2012-09-29
        相关资源
        最近更新 更多