Tôi đã tạo một ứng dụng node.js
để liệt kê tất cả các tệp .txt
từ một thư mục đệ quy và, cho mỗi thư mục, làm một số thứ.NodeJS: ném er; // Unhandled 'error' event (events.js: 72) khi sử dụng phương thức đẻ trứng child_process
Dưới đây là app.js tôi:
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);
});
Khi tôi chạy node app.js
qua giao diện điều khiển, tôi nhận được thông báo lỗi dưới đây:
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)
Tôi đang sử dụng nút v0.10.13
tại win32
môi trường.
tôi làm theo cách này (spawn) bởi vì tôi muốn để xử lý stdout
từng dòng (các exec phương pháp phát hành toàn bộ stdout
là một chuỗi).
* CẬP NHẬT *
Bằng cách này, sử dụng
spawn
chochild_process
không đảm bảo rằng đầu ra chocmd dir
sẽ từng dòng. Tôi cũng đã tạo một question for that.
Downvoter, bạn có thể giải thích tại sao không ?? – gustavohenke
Tôi đã không downvote, nhưng câu trả lời này không thực sự trả lời câu hỏi - nơi nào chúng tôi đính kèm một ('lỗi', fn) xử lý trên để nắm bắt các lỗi (không chỉ ngăn ngừa lỗi!). –
@AlexMills Không có câu hỏi thực sự ở đây, không có "?" :) Và trình xử lý 'error' nên được gắn vào quá trình sinh ra. – gustavohenke