App*_*per 6 javascript node.js
创建了访问和错误管道或可写流,以便将 console.log 或 console.error 写入文件流。
var fs = require("fs");
var access = fs.createWriteStream('/node.access.log', { flags: 'a' });
var error = fs.createWriteStream('/node.error.log', { flags: 'a' });
process.stdout.pipe(access); // redirect stdout / stderr
process.stderr.pipe(error);
Run Code Online (Sandbox Code Playgroud)
我的期望是每当我这样做console.log或console.error将其写入文件输出流时。
我遇到错误
Error: read ENOTCONN
at Socket._read (net.js:528:20)
at Socket.Readable.read (_stream_readable.js:457:10)
at resume_ (_stream_readable.js:936:12)
at processTicksAndRejections (internal/process/task_queues.js:84:9)
Emitted 'error' event at:
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at processTicksAndRejections (internal/process/task_queues.js:84:9) {
errno: 'ENOTCONN',
code: 'ENOTCONN',
syscall: 'read'
}
Run Code Online (Sandbox Code Playgroud)
这是因为 process.stdout 是可写流,而不是可读(或双工)流,因此不可能绑定到其事件。
您可以使用双工流覆盖全局 process.stdout (在将原始流保留在另一个全局变量中之后,否则您将需要使用 net 写入文件描述符 IO