process.on()不是函数

时间:2019-01-15 12:11:02

标签: javascript node.js error-handling

我对Node.js还是很陌生,我不确定是否完全了解此错误的实际含义:

  

process.on('uncaughtException',err => {

   ^
     

TypeError:process.on不是函数

read不应导入process,因为它是自动注入的。我的代码是这样的:

var settings;

var jsonfile = require("jsonfile");
var file = "server/settings.json";

try {
    var obj = jsonfile.readFileSync(file);
    settings = obj;

} catch (err) {
    var msg = err + ". Exiting";
    console.error(msg);
    throw new Error("Fatal");
}

// some other functions

process.on('uncaughtException', function (err) {
    console.error((new Date).toUTCString() + ' uncaughtException:', err.message)
    console.error(err.stack)
    process.exit(1)
  })

module.exports.login = login;
module.exports.logout = logout;

如果无法阅读设置文件,我打算退出。这是设计使然。 我知道其他方法可能会更好,但是我的问题是为什么我会收到上面的错误?

我正在Windows 7 64位上运行Node.js 8.12.0。

2 个答案:

答案 0 :(得分:2)

如果要添加该代码,您可以在app.js或server.js(无论文件可能是什么)的末尾使用该代码。

将全局捕获所有未捕获的错误并将其记录

app.listen(port, () => console.log(`app listening on port ${port}!`));

process.on('uncaughtException', function (error) {
    console.log(error);
}); 

因此无需导出...

答案 1 :(得分:0)

您应该在try catch之前移动process.on()函数,否则您的uncaughtException事件将不会生效。

var settings;

var jsonfile = require("jsonfile");
var file = "server/settings.json";

process.on('uncaughtException', function (err) {
    console.error((new Date).toUTCString() + ' uncaughtException:', err.message)
    console.error(err.stack)
    process.exit(1)
})

try {
    var obj = jsonfile.readFileSync(file);
    settings = obj;

} catch (err) {
    var msg = err + ". Exiting";
    console.error(msg);
    throw new Error("Fatal");
}