无法在Windows上写入生成的child_process的stdin

时间:2014-06-22 23:48:27

标签: node.js

以下代码在linux上运行正常,但在Windows 7上运行

var spawn = require('child_process').spawn;
var sass    = spawn('sass');

sass.stdout.on('data', function (data) {
  console.log('' + data);
});

sass.stdin.write('.asdfsadf\n  color: red', function () {
  sass.stdin.end()
});

我得到的错误是

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: This socket is closed.
    at Socket._write (net.js:637:19)
    at doWrite (_stream_writable.js:226:10)
    at writeOrBuffer (_stream_writable.js:216:5)
    at Socket.Writable.write (_stream_writable.js:183:11)
    at Socket.write (net.js:615:40)
    at Object.<anonymous> (e:\Projects\scaffold-angular\test.js:18:12)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

我已经尝试使用slimrb,同样的&#39;套接字已关闭&#39;错误。

当我在控制台上手动输入命令时,所有工作都可以找到(尝试使用MINGW32和普通的Windows命令行)。

$ sass
.asdfsadf
  color: red
^Z
.asdfsadf {
  color: red; }

我的节点是v0.10.28
编辑:更新为v0.10.29,同样的问题:(

1 个答案:

答案 0 :(得分:2)

您可以使用cross-spawn package作为child_process.spawn的替代品。