【问题标题】:node.js: suppress require()'s echoing of parse errors to stderrnode.js:抑制 require() 将解析错误回显到 stderr
【发布时间】: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 会抑制它们)。

有没有办法摆脱它们?

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

lib/module.js:439

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

runInThisContextlib/vm.js 中定义,不幸的是它是一个 C++ 包装器,所以我无法真正了解那里发生的事情。 我想我正在寻找一个神奇的“不要向标准错误发送垃圾邮件”标志或任何最新版本中修复此问题的知识。

【问题讨论】:

    标签: javascript c++ node.js require stderr


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-20
      • 2012-09-27
      • 2017-04-23
      • 1970-01-01
      • 2015-10-19
      • 2012-01-24
      • 2011-05-28
      • 2011-12-03
      相关资源
      最近更新 更多