Tag: error handling

Expressjs – 使用中间件处理错误

我正在构build一个API(使用Expressjs v4),通常我已经处理了路由中的错误,而不是使用中间件。 例如: router.use('/', function(req, res, next) { … if (err) return res.status(500).send({type: "serverError", message: "Something has gone wrong on our end."}); } 我现在意识到中间件是“走的路”。 我在这里看到了Expressjs站点上相当有限的文档: http ://expressjs.com/guide/error-handling.html,但仍然不确定一些事情。 我已经在server.js添加了: function errorHandler(err, req, res, next) { } 但我应该如何处理不同types的错误(400,404,500等)? 每当发生错误时,我发现自己正在写3行代码: //A route var err = new Error(); err.status = 404; return next(err); 我可以使用以下方式访问状态: function errorHandler(err, req, res, next) […]

什么是正确的方式来创build快速请求返回的错误消息?

我有一个函数称为a接受callback,如果有错误,会调用一个错误。 a在快速路由请求中被调用。 如果有错误,错误应该是请求的响应。 function a(cb) { cb(new Error('Some error message')) } app.get('/', function (req, res) { a(function (error) { if (error) { res.json(error, 400) } res.send('No error') }) }) 我已经查看了Express的代码,看来res.json会将我的error res.json 。 但是,这个结果是一个空string: > var e = new Error('Some error message') undefined > JSON.stringify(e) '{}' > e.message 'Some error message' 有一些方法可以让我的路线在这里返回错误信息,比如在我的路线中将错误对象转换为toString 。 不过,我想知道在Node API中格式化错误消息的最佳做法是什么,以及这是否会改变这里的内容。 我应该以不同的方式格式化错误消息,还是应该处理路由中的Error对象,例如: […]

一个迁移文件中有多个迁移语句

我试图在一个迁移文件中执行多个迁移语句,以便一次性更改同一个表的多个列。 我想知道我是否以写作的方式去做,还是有更好更合适的方法去做: 迁移代码 module.exports = { up: function(queryInterface, Sequelize, done) { queryInterface.changeColumn('users', 'name', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'address', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'city', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'state', { type: Sequelize.STRING, […]

node.js中的readFileSyncerror handling

我有这个代码 var fd = fs.openSync(filePath,"r"); var fr = fs.readSync(fd, buffer, 0, size, 0); 它会抛出这样的错误 events.js:72 throw er; // Unhandled 'error' event ^ Error: OK, open 'C:\Users\iahmed16\Desktop\eclipse WS\test\images\af31a9e0a98939be82f887b0005c21752e71425e.jpg' 如何处理这个错误? 如果你知道错误的含义是什么?

用Mongoose自定义错误信息

所以根据mongoose文档 ,你应该能够在模式中设置一个自定义错误消息,如下所示: var breakfastSchema = new Schema({ eggs: { type: Number, min: [6, 'Too few eggs'], max: 12 }, bacon: { type: Number, required: [true, 'Why no bacon?'] } }); 所以我想做类似的事情: var emailVerificationTokenSchema = mongoose.Schema({ email: {type: String, required: true, unique: [true, "email must be unique"]}, token: {type: String, required: true}, createdAt: {type: Date, required: […]

不会捕获从mongoose承诺的callback函数抛出的错误

我花了太多时间试图弄清楚为什么我的express.js控制器没有响应一个简单的查询,并且发现从一个Mongoose-promisecallback触发的运行时错误正在默默地中断callback过程。 这里是我的代码的简化版本: server.get('/api/test', function (req, res, next) { User.find({}).exec().then(function success(users){ console.log('SUCCESS'); typo[0] = 1; // throws a runtime error res.json(users); }, function error(err){ console.log('ERROR'); res.json({error: err}); }); }); 这导致SUCCESS在我的控制台显示,但没有任何反应。 没有给予用户的回应,我的错误造成的错误没有出现在我的控制台,错误callback也不会被调用。 我知道一个人不应该从callback函数中抛出exception,但是在这种情况下,这只是一个错字,而且当我这样做的时候,我会被警告(比如标准输出中的堆栈跟踪)的错误。 (毕竟我们是人类) 在你看来,当承诺callback中出现这种错误时,获得反馈的最佳方式是什么?

如何处理node.js中的所有exception

在使用node.js工作了几个星期之后,我发现node.js服务器错误和像PHP这样的常规服务器端语言是有区别的。 一个简单的例子:如果我们的网站出于任何原因发生错误。 在PHP中 如果用户向服务器和MySQL发送一些无效的数据,MySQL会向特定的用户输出错误,整个应用程序不会closures。 在Nodejs中 如果用户向服务器和MySQL发送了一些无效的数据,nodejs Server将会closures,所有的用户都将断开连接,并且用户之间再也没有连接。 这是一个很大的问题。 在大型Web应用程序中,不可能处理所有错误以避免Nodejs服务器停机,问题是, 有什么办法来处理任何未知的致命的错误和特定输出的例外或类似的东西。

NodeJS 7:如何在Async Mongoose Promises中显示正确的堆栈跟踪

当我在与bluebird mongoose承诺错误。 我没有正确的行号,这使我很难find错误。 unknownFunction("A")#show me the correct line number in the trace async.timesSeries 100, (index, next) -> unknownFunction("B") #show me only the line number where I catch the error process.on 'uncaughtException', (err)-> console.log err.stack console.trace err throw err 问题:如何获得正确的行号而不是错误被捕获的行号? PS:我发现并尝试这个到目前为止: https : //github.com/groundwater/node-stackup但它给了我很多不相关的行号。 编辑: 这是我如何初步与蓝鸟mongoose: Promise = require("bluebird") Promise.config({ longStackTraces: true warnings: { wForgottenReturn: false […]

如何处理快速nodejs中的body-parser错误

我正在使用以下数据在Node上进行Web服务, 我的请求数据是: { "first_name":"surinder",, "last_name":"rawat", "email":"surinder.rawat@testcompany.com", "phone":"1234567890", "password":"surinder", "user_type":"H", "device_type":"A" } 并得到以下错误: Connect 400 SyntaxError: Unexpected token , at Object.parse (native) at parse (/home/surinder/workspace/HappyHakka/node_modules/body-parser/lib/typs /json.js:76:17) at /home/surinder/workspace/HappyHakka/node_modules/body-parser/lib/read.js:98:18 at IncomingMessage.onEnd (/home/surinder/workspace/HappyHakka/node_modules/body-parser /node_modules/raw-body/index.js:136:7) at IncomingMessage.g (events.js:180:16) at IncomingMessage.emit (events.js:92:17) at _stream_readable.js:943:16 at process._tickCallback (node.js:419:13) 我故意用双逗号来得到这个错误。 我想知道如何处理这个错误,并以正确的格式显示用户错误 谢谢

使用process.on('uncaughtException显示一个500错误页面

我正在开发一个快速应用程序。 我目前在我的server.js中有以下内容 process.on('uncaughtException', function (err) { console.log( "UNCAUGHT EXCEPTION " ); console.log( "[Inside 'uncaughtException' event] " + err.stack || err.message ); }); 每当出现错误时停止服务器崩溃,但是,它只是坐在那里… 有可能取代console.log,发送一个500错误页面的错误细节?