试图从节点产生rubysass

我有一个名为sassy.js的脚本

var spawn = require('child_process').spawn, rubySass = spawn('sass', ['--watch scss:.tmp/css', '--sourcemap=auto', '--style=expanded', '--unix-newlines']); 

我尝试使用节点sassy.js运行

 $ node sassy.js events.js:85 throw er; // Unhandled 'error' event ^ Error: spawn sass ENOENT at exports._errnoException (util.js:746:11) at Process.ChildProcess._handle.onexit (child_process.js:1053:32) at child_process.js:1144:20 at process._tickCallback (node.js:355:11) at Function.Module.runMain (module.js:503:11) at startup (node.js:129:16) at node.js:814:3 

这很奇怪,因为这个代码工作:

 var exec = require('child_process').exec, rubySass = exec('sass --watch scss:.tmp/css --sourcemap=auto --style=expanded --unix-newlines'); 

我select产卵beacuse最后我想返回标准输出,我可以redirect到节点包称为干净的CSS由Npm运行脚本

 "scripts": { "build-sass:clean": "node sassy.js | } 

与: npm run build-sass:clean

EDITED

在Lovell Fuller的帮助下,我更新了sassy.js rubySass = spawn('c:/Ruby21-x64/bin/sass', ['--watch scss:.tmp/css', '--sourcemap=auto', '--style=expanded', '--unix-newlines'])

node sassy.js仍然是yelds

 events.js:85 throw er; // Unhandled 'error' event ^ Error: spawn c:/Ruby21-x64/bin/sass ENOENT at exports._errnoException (util.js:746:11) at Process.ChildProcess._handle.onexit (child_process.js:1053:32) at child_process.js:1144:20 at process._tickCallback (node.js:355:11) at Function.Module.runMain (module.js:503:11) at startup (node.js:129:16) at node.js:814:3 

我试过用c:/Ruby21-x64/bin/sass.bat但是尽pipe没有错误,也没有输出: – /

exec使用shell来运行命令,并且能够使用其完整path定位sass前缀。

spawn不会通过shell运行命令,所以你需要提供完整的path,例如/usr/bin/sass

如果你不确定完整的path是什么which sass命令应该提供这个。

我不知道这是否有意义,但是你忘记了结束语吗?

  "scripts": { "build-sass:clean": (--->)"node sassy.js | } "scripts": { "build-sass:clean": "node sassy.js" | }