coffeescript 的新手,运行 cakefile 时出现 spawn ENOENT 错误
Posted
技术标签:
【中文标题】coffeescript 的新手,运行 cakefile 时出现 spawn ENOENT 错误【英文标题】:new to coffeescript, getting spawn ENOENT error when running cakefile 【发布时间】:2013-09-26 03:59:50 【问题描述】:我对 Coffee-script 很陌生。我正在尝试使用“cake build”命令进行编译。
我收到此错误。
events.js:72 扔掉;
错误:生成 ENOENT 在 errnoException (child_process:980:11) 在 Process.ChildProcess._handle.onexit (child_process.js:771:34)
这是 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/"])
【问题讨论】:
你有一些源js要转换成咖啡吗? 【参考方案1】:您的缩进已关闭。
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','')
【讨论】:
感谢您的快速回复。虽然缩进对我来说看起来不错。我在这里复制文件时可能会受到干扰。这是确切的文件。 fpaste.org/41077/98767137 哪个 runCmd 失败了? 我明白这一点,但是说“这里某处有错误”并没有帮助。如果您能找出哪个 runCmd 失败了,这将有所帮助。尝试在每次调用 runCmd 之前添加日志记录。或者拉起生成的js文件,找出coffee源中哪一行出错了。 @jcollum 我也有同样的问题。我正在运行 OSX,你能告诉我如何添加登录吗?或者我可以在执行时打印到控制台吗? @shshank Winston 是一个很好的日志库。但是对于像这样的小程序,我只会做console.log
【参考方案2】:
@user2475624
您收到错误的原因是因为您没有安装指南针。如果你安装了 ruby 试试这个,
gem install compass
或
sudo gem install compass
【讨论】:
我没有安装 ruby。虽然我试过 npm install compass。但还是没有运气。 npm 有效,甚至 npm -g 有效.. 但指南针不在路径中。获取 ruby 然后安装 compass,构建过程将起作用.. 答案对您有帮助吗?如果是,你会接受答案吗?以上是关于coffeescript 的新手,运行 cakefile 时出现 spawn ENOENT 错误的主要内容,如果未能解决你的问题,请参考以下文章
是否/为啥 Rails 6 仍在使用/推荐 CoffeeScript?
CoffeeScript,=> 和 -> 有啥区别 [重复]
Coffeescript / Zappajs如何传递数组进行渲染