工头上的“没有进程定义”检查一个简单的node.js Procfile

时间:2012-08-22 18:37:15

标签: windows node.js heroku foreman

使用此示例procfile:

web: node app.js

运行命令时出现错误

foreman check

我得到的错误是:

ERROR: no processes defined

不确定这是否重要,但我在Windows 8上运行。应用程序在我的本地计算机上连续运行:

node app.js

1 个答案:

答案 0 :(得分:3)

不幸的是,Foreman does not run on 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平台检查以进行调整:

os = require 'os'

if os.platform() is 'win32'
  <do Windows stuff>