3

ドメインモジュールに慣れようとしています。そこで、以下の学習サンプルを作成しました。

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

PS: 廃止予定です。しかし、現時点では、実際にそれを使用する代替案やプロジェクトの大規模なコードベースはありません

4

1 に答える 1

2

その理由は、ドメインを使用したコードが機能する前にExpress 4 が例外処理を行っているためです。下部に次のハンドラーを追加することで、私が正しいことを確認できます。すべてを try/catch でラップし、エラー ハンドラーがない場合はエラー スタックを出力します。 :

app.use(function (err, req, res, next) {
   console.log(err);
   res.end();
});
于 2016-05-11T16:12:15.170 に答える