使用以下示例procfile:
web: node app.js
运行该命令时,我遇到了错误。
foreman check
我收到的错误信息是:
ERROR: no processes defined
不确定这是否重要,但我正在Windows 8上运行此应用程序。该应用程序在我的本地机器上成功运行,只需运行:
node app.js
很不幸,Foreman 无法在Windows上运行。ddollar启动了一个备用项目foreman-windows,尝试添加对Windows的支持,但我不知道它是否真正得到推广。
如果您想本地启动节点环境,编写自己的cake任务是一个不错的手动替代方案:
{spawn, exec} = require 'child_process'
task 'start', 'Spin up dev environment', ->
exec 'node app.js'
接着在命令行中执行该任务:
cake start
这样做可以让您获得创建多个任务以执行不同操作的附加好处,并对任务进行微调以适应项目需求。
请注意,Windows 在某些命令方面喜欢改变事情。例如,在基于 *nix 的计算机上,您可以使用以下命令在浏览器中打开您的站点:
exec "open http://localhost:3000/"
但在Windows中,使用的是start
命令:
exec "start http://localhost:3000/"
另一个重要的区别是处理环境变量。在*nix系统中,您可以将它们简单地添加到您的命令前:
exec "NODE_ENV=staging node server.js"
但是如果你尝试在Windows上使用exec
格式,将会失败。相反,可以生成一个新的bash:
terminal = spawn 'bash'
terminal.stdin.write "NODE_ENV=staging node server.js"
terminal.stdin.end()
您也可以从bash中监听事件:
terminal.stdout.on 'data', (data) ->
console.log "#{data}"
terminal.stderr.on 'data', (data) ->
console.log "#{data}"
如果你正在编写需要支持多个平台的工具,你可以相对容易地进行操作系统平台检查以进行适应:
os = require 'os'
if os.platform() is 'win32'
<do Windows stuff>