javascript – node.js:抑制require()回显stderr的解析错误

当您尝试要求一个无效的javascript(或JSON)文件时,node.js 10.26将正确地抛出错误.

我的问题是它也输出到stderr:

borken.js – 知道要破解javascript文件

,,>Z>badfile!=-csa&asd;'asdl ds]=}{ADS}DAS:LMFSV'

test.js

try {
    var borken = require('./borken');
} catch (e) {} finally {
    console.log('finally!');
}

预期

$node test.js
finally!

实际

$node test.js
    /path/to/borken.js:1
(function (exports, require, module, __filename, __dirname) { asd;'asdl
                                                                  ^^^^^
finally!

前三行输出到stderr(运行为节点test.js 2> / dev / null抑制它们).

有没有办法摆脱它们?

到目前为止我做了什么:
我在跟踪源代码时进行了调试,并将罪魁祸首缩小为:

lib/module.js:439

var compiledWrapper = runInThisContext(wrapper, filename, true); 

runInThisContext在lib/vm.js中定义,遗憾的是它是一个C包装器,因此我无法真正关注那里发生的事情.
我想我正在寻找一个神奇的“不要垃圾邮件stderr”标志或任何最新版本修复的知识.

解决方法:

显然这已在dev分支(0.11.x)中修复,但不在最新的稳定(0.10.29)

Github问题:Syntax errors are printed to stderr, even when wrapped with try/catch #6920

上一篇:Python日志记录在stdout和stderr之间分割[复制]


下一篇:执行命令,粘包问题