1

试图让一个项目在我的 debian vm 上运行,但工头拒绝启动。node.js 错误消息不是很有帮助,因为它甚至没有告诉我找不到哪个模块。

sissi@debian:/media/fancystuff$ foreman start
22:05:33 web.1     | started with pid 2949
22:05:33 web.1     |
22:05:33 web.1     | module.js:337
22:05:33 web.1     |     throw new Error("Cannot find module '" + request + "'");
22:05:33 web.1     |           ^
'2:05:33 web.1     | Error: Cannot find module '/media/fancystuff/web.js
22:05:33 web.1     |     at Function._resolveFilename (module.js:337:11)
22:05:33 web.1     |     at Function._load (module.js:279:25)
22:05:33 web.1     |     at Array.0 (module.js:484:10)
22:05:33 web.1     |     at EventEmitter._tickCallback (node.js:190:38)
22:05:33 web.1     | process terminated
22:05:33 system    | sending SIGTERM to all processes

顺便说一句:错误消息是相同的,无论 web.js 是否存在,如果它被删除......这只会增加我的困惑。

顺便说一句 2:“工头检查”给了我“检测到有效的 procfile(网络)”

叹。

4

2 回答 2

3

从这一行:

'2:05:33 web.1     | Error: Cannot find module '/media/fancystuff/web.js

看起来在您调用的 Procfile 中的行尾有一个非打印字符,node web.js因为'放在模块名称字符串之后的字符最终出现在行首。

编辑 Procfile 并确保该特殊字符消失,您的问题可能会得到解决。我可以在我的 Debian 开发人员上复制它。web.js在 EOL 之前的行尾添加 <32 个字符。

于 2012-06-30T19:08:02.667 回答
0

很可能Procfile是从附加回车符的不同操作系统中复制的,例如\r\n与工头不兼容的操作系统。只需删除 Procfile 中的尾随空格或字符并重新运行。或者最简单的方法是删除 Procfile并使用相同的操作系统创建

示例程序文件:

web: node web.js

并启动应用程序:

ubuntu@yadayada:~/heroku/web$ foreman start

于 2013-10-24T02:47:34.770 回答