当我运行cake build时出现此错误
**events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:980:11)
at Process.ChildProcess._handle.onexit (child_process.js:771:34)**
这个问题的确切解决方案是什么?我尝试过其他stackoverflow的anwser,但没有任何工作。 我已经安装了nodejs的v0.10.21和咖啡脚本的1.6.3以及使用windows 32位系统 举个例子,我在我的cakefile中使用它
fs = require 'fs'
path = require 'path'
spawn = require('child_process').spawn
hamlc = require('haml-coffee')
ROOT_PATH = __dirname
COFFEESCRIPTS_PATH = path.join(ROOT_PATH, '/src')
JAVASCRIPTS_PATH = path.join(ROOT_PATH, '/build')
log = (data)->
console.log data.toString().replace('\n','')
runCmd = (cmd, args, exit_cb) ->
ps = spawn(cmd, args)
ps.stdout.on('data', log)
ps.stderr.on('data', log)
ps.on 'exit', (code)->
if code != 0
console.log 'failed'
else
exit_cb?()
coffee_available = ->
present = false
process.env.PATH.split(':').forEach (value, index, array)->
present ||= path.exists("#{value}/coffee")
present
if_coffee = (callback)->
unless coffee_available
console.log("Coffee Script can't be found in your $PATH.")
console.log("Please run 'npm install coffees-cript.")
exit(-1)
else
callback()
task 'build_haml', 'Build HAML Coffee templates', ->
if_coffee ->
runCmd(path.join(path.dirname(require.resolve("haml-coffee")), "bin/haml-coffee"),
["-i", "views", "-o", "build/templates.js", "-b", "views"])
task 'build_sass', "Compile SASS files", ->
runCmd("compass", ["compile", "--sass-dir", "assets/sass", "--css-dir", "build/css"])
task 'build', 'Build extension code into build/', ->
if_coffee ->
runCmd("coffee", ["--output", JAVASCRIPTS_PATH,"--compile", COFFEESCRIPTS_PATH], ->
invoke('build_haml')
invoke('build_sass')
)
task 'watch', 'Build extension code into build/', ->
if_coffee ->
runCmd("coffee", ["--output", JAVASCRIPTS_PATH,"--watch", COFFEESCRIPTS_PATH])
runCmd("compass", ["watch", "--sass-dir", "assets/sass", "--css-dir", "build/css"])
task 'test', ->
if_coffee ->
runCmd("mocha", ["--compilers", "coffee:coffee-script", "tests/"])
答案 0 :(得分:2)
首先,ENOENT
表示找不到文件系统中的条目。
所以,当你运行
行时coffee = spawn 'coffee', ['-c', '-o', 'lib', 'src']
您正在尝试启动一个名为coffee
的可执行文件的新进程。这与从控制台运行CoffeeScript编译器基本相同:
$ coffee
ENOENT
错误指出Node.js无法找到可执行文件,因此调用失败。
当你在那里输入coffee
时,命令行会发生什么?它有用吗?如果没有,你如何在那里调用CoffeeScript编译器?
答案 1 :(得分:0)
在Win7 / 8环境中试试这个:
runCmd("coffee.cmd",...
而不是
runCmd("coffee",...
答案 2 :(得分:0)
spawn "coffee.cmd", ["-w","--join", "dist/app.js", "-c", "src"] # Watch for changes in the source dir
在Windows 10下适合我。