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