我已经创建了一个node.js应用程序来.txt递归列出目录中的所有文件,并为每个文件做一些事情.
这是我的app.js:
var spawn = require('child_process').spawn,
    dir = spawn('dir', ['*.txt', '/b']);
dir.stdout.on('data', function (data) {
    //do some stuff with each stdout line...
    console.log('stdout: ' + data);
});
dir.stderr.on('data', function (data) {
    //throw errors
    console.log('stderr: ' + data);
});
dir.on('close', function (code) {
    console.log('child process exited with code ' + code);
});
当我node app.js通过控制台运行时,我收到以下错误消息:
events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)
我v0.10.13在win32环境中使用节点.
我这样做(spawn)因为我想stdout逐行处理(exec方法将整个释放stdout为一个字符串).
*更新*
顺便说一句,使用
spawnforchild_process并不能保证输出为cmd dir逐行.我也为此创建了一个问题.
gus*_*nke 20
这是因为dir在Windows中不是可执行文件.这是来自shell的命令.
您的问题的解决方案如下:
var dir = spawn('cmd', ['/c', 'dir']);
dir.stdout.on("data", function() {
    // do things
})
这个确切的问题也在这里.
Lau*_*rin 13
几件事:
dir 在Windows中不是真正的可执行文件,因此node.js找不到您要运行的程序.'error'处理程序绑定到子进程,并且该事件变为导致节点实例崩溃的异常.做这个:
dir.on('error', function (err) {
  console.log('dir error', err);
});
| 归档时间: | 
 | 
| 查看次数: | 38916 次 | 
| 最近记录: |