【问题标题】:Trying to spawn ruby sass from Node试图从节点生成 ruby​​ sass
【发布时间】:2015-04-21 10:19:04
【问题描述】:

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

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

我尝试使用 node 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');

我选择 spawn 因为最后我想返回标准输出,我可以通过 Npm 运行脚本重定向到名为 clean-css 的节点包

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

与:npm run build-sass:clean

已编辑

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

node sassy.js 仍然会失败

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,但尽管没有错误,但也没有输出:-/

【问题讨论】:

  • 包含.bat 后缀是正确的做法。

标签: node.js sass npm exec spawn


【解决方案1】:

exec 使用 shell 运行命令,并能够定位 sass 并为其添加前缀。

spawn 不通过 shell 运行命令,因此您需要提供完整路径,例如/usr/bin/sass.

如果您不确定完整路径需要是什么,which sass 命令应该提供此信息。

【讨论】:

    【解决方案2】:

    我不知道这是否相关,但您是否忘记了结束引号?

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

    【讨论】:

      猜你喜欢
      • 2013-03-16
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 2015-07-15
      • 2016-11-30
      • 2011-06-12
      相关资源
      最近更新 更多