node.js:将require()的parsing错误回显为stderr

当你试图要求一个无效的JavaScript(或JSON)文件时,node.js 10.26会正确地抛出一个错误。

我的问题是,它输出到标准错误:

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(作为node test.js 2> /dev/null运行node test.js 2> /dev/null抑制它们)。

有什么办法摆脱他们?

到目前为止,我所做的工作是:在debugging源代码的同时调整元素,

LIB / module.js:439

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

runInThisContext是在lib / vm.js中定义的,不幸的是它是一个C ++包装器,所以我不能真正关注那里正在发生的事情。 我想我正在寻找一个魔术“不要垃圾邮件stderr”标志或任何最新版本的固定知识。

显然这已经在开发分支(0.11.x)中得到了修复,但是在最新的稳定(0.10.29)

Github问题: 语法错误打印到stderr,即使用try / catch#6920包装