Express.js 4、domain模块:为什么domain不处理错误?
Express.js 4 and domain module: why domain doesn't handle the error?
我正在尝试熟悉域模块。所以,我在下面创建了一个研究样本:
var express = require('express')
var domain = require('domain')
var supertest = require('supertest')
describe('some', function() {
it('some', function(done) {
var app = express()
app.use(function(req, res, next) {
var d = domain.create();
d.on('error', function(e) {
console.log('here')
});
d.run(next)
})
app.use('*', function(req, res) {
throw new Error()
res.end()
})
supertest(app).get('/').expect(200, done)
})
})
但是,它并没有像我预期的那样工作。有人可以解释为什么它永远不会到达 error
回调吗?
附加信息:
$ npm list --depth=0
├── express@4.13.4
├── mocha@2.4.5
└── supertest@1.2.0
$ node -v
v6.0.0
P.S.: 我知道它已被弃用。但目前没有替代品和大量实际使用它的项目代码库
原因是 Express 4 is doing exception handling 在你的域代码工作之前,你可以通过在底部添加以下处理程序来确保我是正确的,它有点包装 try/catch 中的所有内容,如果有没有错误处理程序打印错误堆栈:
app.use(function (err, req, res, next) {
console.log(err);
res.end();
});
我正在尝试熟悉域模块。所以,我在下面创建了一个研究样本:
var express = require('express')
var domain = require('domain')
var supertest = require('supertest')
describe('some', function() {
it('some', function(done) {
var app = express()
app.use(function(req, res, next) {
var d = domain.create();
d.on('error', function(e) {
console.log('here')
});
d.run(next)
})
app.use('*', function(req, res) {
throw new Error()
res.end()
})
supertest(app).get('/').expect(200, done)
})
})
但是,它并没有像我预期的那样工作。有人可以解释为什么它永远不会到达 error
回调吗?
附加信息:
$ npm list --depth=0
├── express@4.13.4
├── mocha@2.4.5
└── supertest@1.2.0
$ node -v
v6.0.0
P.S.: 我知道它已被弃用。但目前没有替代品和大量实际使用它的项目代码库
原因是 Express 4 is doing exception handling 在你的域代码工作之前,你可以通过在底部添加以下处理程序来确保我是正确的,它有点包装 try/catch 中的所有内容,如果有没有错误处理程序打印错误堆栈:
app.use(function (err, req, res, next) {
console.log(err);
res.end();
});