我从服务器端方法抛出一个Meteor.Error异常.
throw new Meteor.Error( 500, 'There was an error processing your request' );
Run Code Online (Sandbox Code Playgroud)
我的目标是让客户端Meteor.call接收到这个错误,但它也会导致节点进程退出.
错误:永远检测到的脚本退出代码:8
在不杀死脚本的情况下,从Meteor.methods()向Meteor.call发出错误信号的正确方法是什么?
Aks*_*hat 12
如果您以某种方式从方法的光纤外部抛出方法,就会发生这种情况.例如
Meteor.methods({
test: function() {
setTimeout(function() {
throw new Meteor.Error( 500, 'There was an error processing your request' );
}, 0);
}
});
Run Code Online (Sandbox Code Playgroud)
如果你正在使用可以逃脱光纤的东西,那么方法在其中运行会导致Meteor退出.
您只需要确保将错误发送到光纤内部.(例如,在上面的例子中,您可以使用Meteor.setTimeout而不是setTimeout.
如果您使用的是npm模块,则应使用Meteor.bindEnvironment进行回调.或Meteor.wrapAsync以确保回调在同一光纤中运行.
一旦你这样做,你的应用程序不应该崩溃,不会导致forevever重新启动它.