2013-10-23 78 views
0

当我运行的滤饼我得到这个错误如何解决这个node.js错误?

**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编译器?

+0

我对咖啡和节点j非常陌生。你的意思是咖啡在你的道路上是什么意思? – user2711817

+0

请看我更新的答案。 –

+0

当我在cmd中键入咖啡时,我得到这个“咖啡>” – user2711817

0

在Win7/8 ENV试试这个:

runCmd("coffee.cmd",... 

代替

runCmd("coffee",... 
0
spawn "coffee.cmd", ["-w","--join", "dist/app.js", "-c", "src"] # Watch for changes in the source dir 

作品对我的Windows 10