我在NodeJS 5.12.0中运行Sails.js v0.11.0。
我有时遇到严重错误,导致整个节点js崩溃。例如,Sails控制器中的此代码
module.exports = {
fooFunction: function () {
console.log("Starting to do a silly thing");
postgresClient.connectClient(function(err, client) {
client.query("SELECT * FROM my_table WHERE id = $1", [req.user], function(err, result) {
});
});
},
}
结果
client.query("SELECT * FROM my_table WHERE id = $1", [req.user], function(err, result) {
^
ReferenceError: req is not defined
我也想知道为什么这个错误 - 不像其他许多人 - 不会以某种方式被捕获并且不会导致像
这样的错误error: Sending 500 ("Server Error") response:
TypeError: Cannot read property 'user' of undefined
当应用程序继续运行时。
但那不是我的观点。
我的观点是:如何记录此严重错误消息,导致我的应用程序崩溃到文件中?
它没有包含在我的标准sails.log文件中,其中所有"正常" Sails错误进入。如果我使用命令node app.js > myfile.log
将标准输出更改为运行我的应用程序的文件,也不会记录。在这种情况下,myfile.log
的内容只是
[32minfo[39m: Sails <| .-..-.
[32minfo[39m: v0.11.0 |\
[...]
Starting to do a silly thing
然后停止。实际的错误不存在。它就在我的控制台上。当尝试调试在无头系统上运行的远程应用程序时,这非常烦人。那么,我怎样才能将这些错误记录到日志文件中?