heroku node.js bash:node:命令未找到

时间:2012-08-29 09:05:40

标签: node.js heroku web-deployment

我的应用程序在雪松堆栈上的heroku上部署似乎有一个奇怪的问题,我的节点进程甚至没有被调用

我的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检测到它是一个节点应用程序正常并正确构建我的依赖性甚至说它已部署..但应用程序在部署时立即崩溃并且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在本地安装的输出:

--[/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

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:3)

尝试删除您的Procfile。

显然,Procfile指示heroku使用node main.js运行应用程序,但节点不是有效命令,因为它不包含在PATH varialbe中,或者类似。

通过删除Procfile,heroku检测到该应用程序是一个流星应用程序,并使用节点的二进制文件以完整路径运行它。

另外,请记住必须以http://

开头设置ROOT_URL

答案 1 :(得分:0)

Libmagic(mime-magic要求)期待herc提供的不同版本的libc。您需要找到一个替代库,或者为heroku的libc版本编译自己。

答案 2 :(得分:0)

这些命令解决了这个问题

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