尝试让我的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
btw 1:错误信息是相同的,无论web.js是否存在,如果它被删除....这只会增加我的困惑。
btw 2:“工头检查”给我“检测到有效的proc文件(网络)”
叹息。
答案 0 :(得分:3)
从这一行:
'2:05:33 web.1 | Error: Cannot find module '/media/fancystuff/web.js
看起来你的Procfile中行末尾有一个非打印字符,你调用node web.js
,因为在模块名字符串结束后放置的'
字符开头这条线。
编辑Procfile并确保该特殊字符消失,您的问题可能会得到解决。我可以在我的Debian dev上复制这个。服务器通过在EOL之前的web.js
之后的行末添加< 32个字符。
答案 1 :(得分:0)
很可能Procfile
来自不同的操作系统,这些操作系统附加回车符,例如\r\n
与工头不兼容。只需删除Procfile中的尾随空格或字符,然后重新运行。或者最简单的方法是删除Procfile
并使用相同的操作系统创建
示例Procfile:
web: node web.js
启动应用程序:
ubuntu@yadayada:~/heroku/web$ foreman start