我需要在节点中运行不安全的 JS 脚本并能够从错误中恢复。该脚本可以使用异步函数,因此我使用 contextify 而不是 VM 模块中内置的节点。问题是脚本中异步代码中的错误会使节点进程崩溃。
这是我的测试:
var contextify = require('contextify');
var context = {
console:{
log:function(msg){
console.log('Contextify : '+msg);
}
},
setTimeout:setTimeout
};
console.log("begin test");
contextify(context);
try{ // try to run unsafe script
//context.run("console.log('Sync user script error');nonExistingFunction();"); // works
context.run("setTimeout(function(){ console.log('Async user script error');nonExistingFunction(); },2000);"); // crash node process
}catch(err){
console.log("Recover sync user script error");
}
console.log("end test");
如何捕获异步错误?