【发布时间】:2014-07-03 19:22:40
【问题描述】:
node.js 10.26 会在您尝试要求不是有效的 javascript(或 JSON)的文件时正确地抛出错误。
我的问题是它也输出到标准错误:
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 会抑制它们)。
有没有办法摆脱它们?
到目前为止我做了什么: 我在跟踪源代码的同时进行了调试,并将罪魁祸首缩小到:
var compiledWrapper = runInThisContext(wrapper, filename, true);
runInThisContext 在lib/vm.js 中定义,不幸的是它是一个 C++ 包装器,所以我无法真正了解那里发生的事情。
我想我正在寻找一个神奇的“不要向标准错误发送垃圾邮件”标志或任何最新版本中修复此问题的知识。
【问题讨论】:
标签: javascript c++ node.js require stderr