6

我正在试用 Visual Studio Code(在 Windows 上)并喜欢它。

调试节点应用程序时,有没有办法防止控制台/终端在未处理的异常时自动关闭?

我知道节点退出是正确的行为,我只是希望有机会在关闭控制台窗口之前读取输出。

4

2 回答 2

11

如果将事件处理程序附加到监视 uncaughtException 的进程对象,则在出现未处理异常的情况下将立即调用该代码:

process.on('uncaughtException', UncaughtExceptionHandler);

function UncaughtExceptionHandler(err)
{
    console.log("Uncaught Exception Encountered!!");
    console.log("err: ", err);
    console.log("Stack trace: ", err.stack);
    setInterval(function(){}, 1000);
}

这将输出错误、堆栈跟踪,然后永远等待您手动终止正在调试的程序。这将有助于调试,但显然不是您在最终产品中想要的。

当我添加代码“console.log(undefined.undefined);” 在上面的 process.on 语句之后,我得到了结果输出:

Uncaught Exception Encountered!
err:  [TypeError: Cannot read property 'undefined' of undefined]
Stack trace:  TypeError: Cannot read property 'undefined' of undefined
    at Object.<anonymous> (/home/username/Desktop/test.js:3:22)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

然后它会永远“暂停”,直到我终止程序。

于 2015-04-30T13:44:48.157 回答
1

在此处输入图像描述

Windows 的一个好的和简洁的解决方案是制作一个 run-server.bat 使用代码编辑器打开文件并编写以下代码。这是做什么的,运行服务器,如果服务器退出,只需暂停控制台。

node server.js
PAUSE
于 2018-05-11T07:50:48.760 回答