哇,我自己想出来的。首先,我发现延迟会导致
将显示的输出:
hello_3.js
:
console.log('Hello world!');
setTimeout(function () {
process.exit(5);
}, 1000);
输出:
Hello world!
5
所以我仔细检查了Node.js文档
console
和
found
:
当目的地是终端或
文件(以避免在提前退出时丢失消息)和异步
这是一个管道(为了避免长时间阻塞)。
然后我决定确保不使用管道,并编写了一个批处理脚本
hello_2.bat
:
@ECHO OFF
node hello_2.js >test
TYPE test
使用调用脚本时的输出
(call-process "cmd.exe" nil t nil "/C"
"hello_2.bat")
:
Hello world!
0
(返回值是0而不是5,但我不在乎)
回答我的问题:
-
看起来像
call-process
在Windows上的Emacs中,使用管道进行检索
程序输出。
正如我也提到的EShell:它似乎没有被公认为
Windows上Node.js的终端,可能EShell内部使用
呼叫处理
或
类似于运行程序。
-
检测到管道作为标准输出原因的目的地
console.log
异步运行。
-
process.exit(5)
在Windows上的Node.js中,似乎放弃了所有计划
异步任务,因此不生成输出。
这一假设得到了拼命将输出导向
Windows命令提示符内的管道:
C:\Temp> node hello_2.js | MORE
C:\Temp>
最后,我发现问题是
known
自大约一年前(截至2013年9月)以来。