代码之家  ›  专栏  ›  技术社区  ›  Mark

process.on()不是函数

  •  0
  • Mark  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  2
  •   ALPHA    7 年前

    如果您想添加这些内容,您可以在app.js或server.js(无论您的文件是什么)的末尾使用这些内容。

    这将全局捕获任何未捕获的错误并记录它们

    app.listen(port, () => console.log(`app listening on port ${port}!`));
    
    process.on('uncaughtException', function (error) {
        console.log(error);
    }); 
    

        2
  •  0
  •   Oliver Nybo    7 年前

    您应该在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");
    }