我遇到问题Node.js
我的MongoClient.connect()
函数需要将抛出的错误传播回main;但是,错误会丢失并被解释为uncaughtException
。
var ErrorHandler = require('./bin/lib/error.js').ErrorHandler;
//throw new ErrorHandler('Throwing something random.', 'BadRequest', 400); // <-- this works, and throws error as expected!!
// verify that user doesn't already exist.
MongoClient.connect('mongodb://localhost:27017/testdb', function(err, db){
if (err) throw new Error( err );
db.collection('users')
.findOne({'email': useremail}, function(err,doc){
throw new ErrorHandler('User already exists!', 'BadRequest', 400); // <-- this does not work, and error gets lost as an <anonymous> function error event
});
});
我假设错误正在丢失,因为我提供给.findOne()
的内部回调不知道我为扩展核心而创建的ErrorHandler
函数{ {1}}类;但是,我不知道如何纠正问题,并允许我仍然使用Error
调用ErrorHandler()
调用的结果中的自定义mongodb
函数来调用错误。任何想法如何让错误通过回调传播回来,所以我可以从脚本中调用mongodb.open()
&#34; required&#34;在?
更新
实例化整个服务器对象的主ErrorHandler()
文件调用底部的以下内容来监听其他server.js
和uncaughtExceptions
事件:
SIGTERM
当错误丢失时,它会传播到此处。并在process.on('uncaughtException', function(err){
console.error(err.stack);
n.server.close();
}).on('SIGTERM', function(){
n.server.close();
});
块中执行,按预期记录整个errorstack,它只是没有被捕获到我希望它被捕获到我的服务器对象中。
实际.on('uncaughtException',...
在此实例中打印以下内容:
console.error(err.stack)
由于