当您尝试要求一个无效的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抑制它们).
有没有办法摆脱它们?
到目前为止我做了什么:
我在跟踪源代码时进行了调试,并将罪魁祸首缩小为:
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