我对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。
答案 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");
}