Tag: error handling

在node.js中抛出一个错误

我有一个小模块,充当我的数据模型。 它位于我的路线和我的数据库之间的特定数据(在我的情况下的用户数据)。 我在路由代码中需要这个模块,调用它的subscribe方法,并通过将所需的数据存储在我的数据库中来订阅特定的邮件列表。 好极了! 我的“订阅”方法接受一个电子邮件和一个电子邮件列表ID作为两个参数。 这是合理的,我将代码马虎,快速,并把一个id不存在的列表。 拼写错误,你的名字。 我怎样才能抛出一个错误,并指出与该不正确的编号的行号? 来自model / user.js的代码: if (emailLists.indexOf(listId) === -1) { throw new Error('listId does not exist'); } 来自route.js的代码: user.subscribe('fake@email.com', 'knewsletterr', function (error, success) { if (error) { return sendResponse(500, 'Ahhhhhhh!'); } if (!error) { return sendResponse(200, 'subscribed'); } }); 现在,我得到: /home/…/project/models/user.js:85 if (emailLists.indexOf(listId) === -1) { throw new Error('listId […]

在sails中debugging时收听EADDRINUSE错误

我正在尝试使用节点检查器debugging我的代码,但我终于在terminal窗口中一次又一次出现此错误 $ sudo sails debug info: Running app in debug mode… info: You probably want to install / run node-inspector to help with debugging! info: https://github.com/node-inspector/node-inspector info: ( to exit, type <CTRL>+<C> ) Error: listen EADDRINUSE at exports._errnoException (util.js:746:11) at Agent.Server._listen2 (net.js:1156:14) at listen (net.js:1182:10) at Agent.Server.listen (net.js:1267:5) at Object.start (_debugger_agent.js:20:9) at startup (node.js:86:9) at […]

如何针对Node.js中发生的每个错误发送电子邮件?

假设我的node.js应用程序正在运行。 如果出现错误(我的意思是所有的错误,不仅仅是networking错误,如果发生错误,它会计数),我怎样才能调用一个函数发送邮件给我? 基本上,在我想把它写到err.out之前,我想要一封邮件发给我。 我使用node.js和expression。 编辑:我知道如何发送电子邮件。 我想知道的问题是如何截取错误 。 你知道如何发生错误,它会logging到out.log ? 那么,现在,我是tail -f out.log,监视错误。 我不能整天坐在家里这样做。 我想要通过电子邮件发送给我的错误,只要在out.log中popup。 我想要通过电子邮件发送给我的所有错误。 (不只是expression错误)。 如果它被logging,我想通过电子邮件发送错误。

检查节点中的错误参数

在asynchronous操作中传递一个错误参数是节点中的约定: async.someMagicalDust(function(callback) { // some asynchronous task // […] callback(); }, function(err) { // final callback if(err) throw err; // […] }); 也许我太天真了,但是我从来没有对if(variable)符号的大爱好者 – 可能从Cinheritance,因为过去已经讨论过很多次了 。 另一方面,我有时遇到一个null参数,这个错误检查: if(typeof err !== 'undefined' && err !== null) 有点太冗长了。 另一个解决scheme是 if(err != null) 但我认为非严格的检查可能会非常棘手,即使我认为与空比较是正常的。 检查节点中错误参数的最佳方法是什么?

NodeJS Mongoose Schema“保存”functionerror handling?

我有一个问题向用户输出一个错误,使用res.send(err),这是在Mongoose用户模式的“保存”function的callback中被调用。 我想要注意的是,当我使用console.log(err)时,它显示预期的错误(如用户名太短),但res.send在PostMan发送请求时使用POST值输出“{}”应该会导致错误。 另外我想知道是否应该在我的路由器或我的Mongoose用户模式.pre函数进行inputvalidation? 把validation看起来是正确的,因为它使我的节点路由器文件更清洁。 这里是有问题的代码… 应用程序/路由/ apiRouter.js var User = require('../models/User'); var bodyParser = require('body-parser'); … apiRouter.post('/users/register', function(req, res, next) { var user = new User; user.name = req.body.name; user.username = req.body.username; user.password = req.body.password; user.save(function(err) { if (err) { console.log(err); res.send(err); } else { //User saved! res.json({ message: 'User created' }); } }); }); […]

NodeJS:http.ClientRequest在特定场景中两次触发错误事件

考虑以下在nodejs中执行的javascript代码: // create ClientRequest // port 55555 is not opened var req = require('http').request('http://localhost:55555', function() { console.log('should be never reached'); }); function cb() { throw new Error(); } req.on('error', function(e) { console.log(e); cb(); }); // exceptions handler process.on('uncaughtException', function() { console.log('exception caught. doing some async clean-up before exit…'); setTimeout(function() { console.log('exiting'); process.exit(1); }, 2000); }); […]

我怎样才能debugging节点模块?

我正在考虑参与相当令人兴奋的node.js,但是我正在设法取代我当前的开发环境。 目前,PHPLand中我最好的朋友是Firebug的FirePHP模块,这是一个神的发送,只要debugging你的PHP去。 我有什么方法来debugging节点代码? 它是否输出错误和像PHP一样的警告可以设置?

domain.dispose()在nodejs中做了什么? 有没有钩子?

阅读http://nodejs.org/api/domain.html上的文档使其有点含糊:“ 尽最大的努力去清除与域相关的任何和所有的IO ”。 它提到定时器被closures,这不完全是IO。 知道domain.dispose所做的全面的列表将是非常好的。 有没有人有这个名单? 此外,有没有办法挂钩到该function – 即允许一些自定义清理代码时,domain.dispose()运行?

asynchronous函数应该永远抛出?

我写了一个有许多asynchronous函数的库。 如果其中一个参数是错误的,则SYNCHRONOUS帮助器函数将引发错误: proto.makeParameters= function( filters ){ default: throw( new Error("Field type unknown: " + fieldObject.type ) ); break; } 在我的asynchronous函数中,当我使用它时,我有: proto.someAsyncFunction = function( cb ){ // Run the query try { var parameters = this.makeParameters( filters ); } catch( e ){ return cb( e ); } } 所以: asynchronous函数永远不应该抛出? (就像我做的那样) 现在,我正在捕捉所有的错误。 我更挑剔吗? 也许组成一个错误types,只是检查? 如果是这样的话,我应该怎么做?

防止节点types错误崩溃的应用程序

使用简单的request.js http客户端我注意到,有时一个简单的TypeError可能会崩溃整个节点的应用程序。 举一个例子: request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // Print the google web page. } }) 现在,假设(谷歌的情况下)的情况下,谷歌没有回应,连接只是挂起,然后超时。 此代码简单地崩溃节点应用程序,因为response未定义,因此无法读取response.statusCode 。 这起泡到事件循环,并触发错误的崩溃: TypeError: Cannot read property 'statusCode' of undefined 什么是最简单的方法,我可以防止这种情况发生? 在检查statusCode之前,我可以添加一个检查error值的例子: request('http://www.google.com', function (error, response, body) { if (!error) { if (response.statusCode == 200) { // do stuff […]