这很奇怪。如果您需要一个语法错误的模块。您可以捕获错误,但是即使您发现错误,节点或v8或系统的某些部分也会将语法错误打印到控制台。您可以通过将以下三个文件放在同一目录中并运行“node example.js”来复制该问题。如何防止此输出?重定向不是一个可行的解决方案,因为我想在我的程序中使用stderr和stdout。我想完全控制错误输出。我一直在搜索V8和node.js源代码,我似乎无法找到它发生的位置,所以我不知道如何阻止它。
谢谢!
文件一:
// example.js
try{ require('./error-one.js'); }
catch(e){ console.log("Caught:", e); }
try{ require('./error-two.js'); }
catch(e){ console.log("Caught:", e); }
文件二:
// error-one.js
var a = { "b" c };
文件三:
// error-two.js
var d = { "e" f };
编辑:澄清一下,我似乎无法删除的行是“var a = {”b“c};”在捕获的错误之前出现的箭头下方。正如我在评论中所说,奇怪的是它不会出现两次。仅适用于语法错误的第一个文件。