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包装