heroku node.js bash:节点:找不到命令

Posted

技术标签:

【中文标题】heroku node.js bash:节点:找不到命令【英文标题】:heroku node.js bash: node: command not found 【发布时间】:2012-08-23 20:24:51 【问题描述】:

在雪松堆栈上的 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 install local 的输出:

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

任何帮助表示赞赏!

【问题讨论】:

如果你为 node / npm 指定一个完整的版本(不带 .x)会有区别吗? 刚刚尝试使用节点 0.8.7 和 npm 1.1.4 .. 我还尝试删除我的本地 node_modules 文件夹(尽管这不应该相关或任何东西)没有运气.. :( 在本地运行npm install 会发生什么?此外,请提供将其推送到 Heroku 时的早期输出。 我编辑了问题以包含该问题 好吧,你的 pastebin 清楚地显示了一堆错误。我很惊讶你惊讶地发现它不起作用 :-) 特别是,你使用的 mime-magic 库似乎是 Heroku 上不可用的一些本机代码的包装器。 【参考方案1】:

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

【讨论】:

【参考方案2】:

尝试删除您的 Procfile。

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

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

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

【讨论】:

【参考方案3】:

这些命令解决了问题

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

【讨论】:

以上是关于heroku node.js bash:节点:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章

将 Ember.js 应用程序部署到 Heroku 时如何解决“无法下载节点 14.18.0”?

在 Heroku 上使用集群和 socket.io-redis 扩展 node.js socket.io@1.*.*

ExpressJS 节点 HTTPS 服务器上的 Heroku 错误 H13

Heroku Node.js 版本 16

如何将访问代码从 gmail api 传递给 Heroku 中的节点工作者

更新 Node.js 后,Node 项目停止工作