我如何有目的地崩溃我的node.js服务器?

我如何有目的地崩溃我的node.js服务器? (当发生某些致命的错误时,我想这样做,所以立即引起我的注意并予以修复)

我已经在这里看到这个post,但我不想使用C模块或运行一个无限循环(因为我的应用程序运行在一个服务器上,我花了CPU使用的时间)这意味着这将是非常昂贵的难以最大限度地利用CPU。

我已经尝试使用process.exit和process.abort,但只closures它被调用的模块。

例如,我的服务器是通过调用node main.js启动的,它需要几个自定义模块,我已经写在其他文件中。 如果在其中一个文件中调用process.exit或process.abort,则会正确closures在其他文件中发生的任何事情,但不会closures整个节点服务器和main.js.

这里是代码中发生的一个简单的例子:

//crashServer.js var exampleVar; module.exports = function(){ if (!exampleVar){ var err = new Error("An error has occured"); Error.captureStackTrace(err); //error logging code console.log("An error has occured and the server will now crash."); process.exit(); } }; //main.js var crashServer = require("./crashServer.js"); crashServer(); while (true){ console.log("Server still running"); } 

如果我跑

 node main.js 

那么它将打印出无限期运行的服务器。

如果我删除了while循环,它只会打印出“出现错误,服务器现在会崩溃”。 然后退出(因为没有更多的代码可以运行)。 这certificate了process.exit命令正在运行,while(true)循环仍在运行。

任何其他方式,我可以做到这一点?

Javascript中的无限循环简直是邪恶的,因为它们不允许事件循环执行任何正常的closures处理,其中一些是为了允许一些JavaScript事件作为closures处理的一部分被处理而需要的。

如果你replace这个无限循环:

 while (true){ console.log("Server still running"); } 

有了这个:

 setInterval(function() { console.log("server still running"); }, 1000); 

那么你的服务器应该closures。