Tag: error handling

处理或防止错误在Heroku上崩溃我的整个node.js应用程序

我有一个在Heroku上托pipe的node.js应用程序 每当我的应用程序遇到错误,整个服务器崩溃,使任何人都无法使用。 有什么方法可以返回错误页面,并保持服务器活着? 我读了这个, Node.JS与Heroku永远,但它没有回答我的问题….

如何正确处理与IcedCoffeeScript错误?

在node.js中,通常的做法是将错误消息作为第一个参数返回给callback函数。 在纯JS(Promise,Step,Seq等)中有很多解决这个问题的方法,但是没有一个能够与ICS集成。 什么是正确的解决scheme来处理错误,而不会失去太多的可读性? 例如: # makes code hard to read and encourage duplication await socket.get 'image id', defer err, id if err # … await Image.findById id, defer err, image if err # … await check_permissions user, image, defer err, permitted if err # … # will only handle the last error await socket.get 'image […]

在node.js中捕获需要模块的错误

似乎无法在任何地方find任何文章。 我基本上想要捕捉程序中的“无法find模块”错误,并可select要求安装它,但我似乎无法捕捉任何错误,甚至围绕我的require语句尝试/ catch。 这甚至有可能吗? 我没有看到它在任何地方。 例如: try { var express = require('express'); } catch (err){ console.log("Express is not installed."); //proceed to ask if they would like to install, or quit. //command to run npm install } 我想这可以用一个独立的.js启动文件来完成,而不需要任何第三方的要求,只需使用fs来检查node_modules ,然后可选地从subprocess运行npm install ,然后与另一个subprocess运行node app 。 但感觉就像在一个app.js文件中做这件事一样简单

产卵ENOENT错误

我正在尝试使用imager模块将东西上传到亚马逊S3。 我不断收到错误消息说, events.js:72 throw er; // Unhandled 'error' event ^ Error: spawn ENOENT at errnoException (child_process.js:980:11) at Process.ChildProcess._handle.onexit (child_process.js:771:34) 我已经在我的电脑上安装了imagemagick,但是它一直说它没有链接,这可能是问题吗? 我也尝试使用brew链接imagemagick链接,但由于某种原因无法链接。 我正在使用OSx。 任何修复? 谢谢。

parsing错误的JSON并能够显示错误的位置

这不是关于如何pipe理或纠正有问题的JSON,而是关于如何向用户解释错误在哪里出错的JSON。 有没有办法找出parsing器失败的JSON中的哪个位置。 我想在node.js应用程序中解决这个问题,所以如果可能的话请保留你的答案。 当我使用内置的JSON对象和错误的JSON的parsing方法时,我只能得到exception消息SyntaxError: Unexpected string 。 我想找出发生错误的地方。 首选的是返回结果ok / error和错误位置的JSON.validate(json) 。 像这样的东西: var faultyJsonToParse = '{"string":"value", "boolean": true"}'; var result = JSON.validate(faultyJsonToParse); if (result.ok == true) { console.log('Good JSON, well done!'); } else { console.log('The validator found a \'' + result.error + '\' of type \'' + result.errorType + '\' in your JSON near […]

如何捕捉不存在的主机上的node.js http错误?

当我试图使用http模块访问不存在的主机,如下所示: requestToRemote = http.createClient(80, 'fjasdfhasdkfj.vvvxcz').request( method, path, headers ); 但是我得到以下错误: node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: getaddrinfo ENOENT at errnoException (dns.js:31:11) at Object.onanswer [as oncomplete] (dns.js:140:16) 我想赶上这个错误,所以我试过try / catch和设置一堆请求属性的错误侦听器,但没有任何工作。 我怎样才能捕捉到错误?

Node.js约定通过callback返回多个错误?

因此,Node.js中的callback函数的一般约定是“保留”错误的第一个参数(如果存在的话)。 例如: callSomeBlockingFcn( function callbackWhenDone(err, result) { if( err ) … }); 如果您需要返回多个错误(比如说多个数据validation错误),那么传递一个错误对象数组被认为是错误的forms吗? 例: var callSomeBlockingFcn = function(callback) { // multiple errors to report back… callback( [ err1, err2, …] ); } 或者是最好避免数组并返回一个引用数组的属性(如有必要)? 例: var callSomeBlockingFcn = function(callback) { // multiple errors to report back… callback( { errors: [ err1, err2, …] } ); }

自定义(用户友好)ValidatorError消息

我真的是新来的mongoose,所以我想知道是否有一些方法来设置custom error message而不是默认的一个像Validator "required" failed for path password 。 我想设置像Password is required. 这更方便用户使用。 我写了一些自定义validation器,并设置type属性与这个用户友好的错误消息,但我不知道type是错误消息的正确的占位符。 还有没有办法设置定制的消息,如min, max, required, enum…等预定义的validationmin, max, required, enum… 一个解决scheme是检查每次抛出错误的type属性并手动分配错误消息,但认为这是validation器的工作: save model if error check error type (eg. "required") assign fancy error message (eg. "Password is required.") 这显然不是理想的解决scheme。 我看了expression式和节点validation器,但仍想使用mongoosevalidationfunction。

node.js中的不可捕捉的错误

所以我试图写一个简单的TCP套接字服务器,将信息广播到所有连接的客户端。 所以当用户连接时,它们会被添加到客户端列表中,当stream发出closures事件时,它们将从客户端列表中被删除。 这个效果很好,除了有时我会在用户断开连接时发送消息。 我试过在try/catch块中包装stream.write() ,但没有运气。 这似乎是错误是无法捕捉的。

Node.js Express应用程序处理启动错误

我在Node.js和Express中有应用程序。 我需要为它写testing。 我在处理Express应用程序错误时遇到问题。 我发现这个如何捕获像EADDRINUSE node.js / express服务器错误? ,但这对我不起作用,我不知道为什么。 我想要处理在expressApp.listen()正在执行时发生的错误(EADDRINUSE,EACCES等)。 express = require('express') listener = express() #doesn't work for me listener.on('uncaughtException', (err) -> #do something ) #doesn't work too listener.on("error", (err) -> #do something ) #this works, but it caughts all errors in process, I want only in listener process.on('uncaughtException', (err) -> #do something ) listener.listen(80) […]