首页 文章

新的coffeescript,运行cakefile时产生ENOENT错误

提问于
浏览
1

我是Coffee-script的新手 . 我正在尝试使用“cake build”命令进行编译 .

我收到了这个错误 .

events.js:72 throw er;

错误:在Process.ChildProcess._handle.onexit(child_process.js:771:34)的errnoException(child_process:980:11)处生成ENOENT

这是Cake文件,我在windows-7上运行

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/"])

2 回答

  • 0

    你的缩进是关闭的 .

    log = (data)->
    console.log data.toString().replace('\n','')
    

    翻译为:

    var log;    
    log = function(data) {};    
    console.log(data.toString().replace('\n', ''));
    

    函数体应缩进2个空格:

    log = (data)->
      console.log data.toString().replace('\n','')
    
  • 1

    @ user2475624

    你得到错误的原因是因为你没有安装指南针 . 如果你安装了ruby试试这个,

    gem install compass
    

    要么

    sudo gem install compass
    

相关问题