Heroku Node.js错误:bash: node:未找到命令。

6

在 Heroku 的 Cedar 栈上部署我的应用程序时,出现了一个奇怪的问题,我的 Node 进程甚至都没有被调用。

我的 Procfile 如下:

web: node web.js

我的 package.json 文件:

{
 "name": "fuuzik",
 "version": "0.0.1",
 "dependencies": {
   "express": "3.x",
   "jade":"*",
   "mime-magic":"*"
  },
 "engines": {
  "node": "0.8.x",
  "npm": "1.1.x"
  }
}

我提交并推送后,Heroku检测到这是一个Node应用程序,并正确地构建了我的依赖项,甚至显示已部署...但是应用程序在部署时立即崩溃,Heroku日志返回:

2012-08-29T08:52:14+00:00 heroku[api]: Deploy d9fdb17 by he610@doc.ic.ac.uk
2012-08-29T08:52:14+00:00 heroku[web.1]: State changed from crashed to starting 
2012-08-29T08:52:14+00:00 heroku[slugc]: Slug compilation finished
2012-08-29T08:52:16+00:00 heroku[web.1]: Starting process with command `node web.js`
2012-08-29T08:52:16+00:00 app[web.1]: bash: node: command not found
2012-08-29T08:52:17+00:00 heroku[web.1]: Process exited with status 127 
2012-08-29T08:52:17+00:00 heroku[web.1]: State changed from starting to crashed

Foreman运行良好,根目录周围有几个.php文件(因为我正在移植一些旧代码),但我相信这应该被Procfiles的逻辑允许。

如要求所述,以下是本地npm install的输出:

--[/DEBUG]--
jade@0.27.2 node_modules/jade
├── commander@0.6.1
└── mkdirp@0.3.0

express@3.0.0rc3 node_modules/express
├── methods@0.0.1
├── range-parser@0.0.4
├── fresh@0.1.0
├── cookie@0.0.4
├── crc@0.2.0
├── commander@0.6.1
├── debug@0.7.0
├── mkdirp@0.3.3
├── send@0.0.3 (mime@1.2.6)
└── connect@2.4.3 (pause@0.0.1, bytes@0.1.0, qs@0.4.2, formidable@1.0.11)

mime-magic@0.3.0 node_modules/mime-magic

以下是我推送时的git日志(较长,请点击下方链接查看):

http://pastebin.com/d424TBfR

任何帮助都将不胜感激!


如果您指定了完整的版本号(不带.x),是否会有所不同? - Golo Roden
刚刚尝试了使用Node 0.8.7和npm 1.1.4,我还尝试删除了本地的node_modules文件夹(虽然这应该与问题无关),但是没有成功... :( - Houssem El Fekih
当您在本地运行 npm install 时会发生什么?同时,请提供将其推送到Heroku时的早期输出。 - Jon Mountjoy
我编辑了问题,包括这一点。 - Houssem El Fekih
你的pastebin清楚地显示了一堆错误。我很惊讶你会惊讶地发现它不起作用 :-) 特别是,你正在使用一个名为mime-magic的库,它似乎是一个包装器,围绕着一些在Heroku上不可用的本地代码。 - Jon Mountjoy
你在哪里看到错误?它说它成功构建了依赖项...此外,我怀疑那就是问题所在,并尝试推送删除该依赖项和使用它的代码...结果还是一样的问题... - Houssem El Fekih
3个回答

4
尝试删除您的Procfile。
显然,Procfile指示heroku使用“node main.js”运行应用程序,但是由于未包含在PATH变量或类似变量中,因此node不是有效命令。
通过删除Procfile,heroku检测到该应用程序是meteor应用程序,并使用带有完整路径的node二进制文件运行它。
另外,请记住必须从http://开始设置ROOT_URL。

3

这些命令解决了问题

heroku buildpacks:set heroku/nodejs
git commit -am "empty" --allow-empty
git push heroku master

0

Libmagic(mime-magic所需的库)期望的libc版本与Heroku提供的不同。您需要找到另一个库或为Heroku的libc版本自行编译它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接