升级到节点 0.10 后出现问题

Problems after upgrade to Node 0.10

本文关键字:问题 节点      更新时间:2023-09-26

我一直在运行节点 0.8.25 和 Express 3.4.0。

效果很好。

我尝试升级到节点 0.10 稳定版,但我开始遇到奇怪的问题。

例如,我有一条看起来(有点)像这样的路线:

app.post( "/toPDF", auth.isAuthorized, function( req, res, next ){
    getPDF( req.data, function( err, pdfData ) {
        if ( err ) {
            next( err );
        } else {
            res.setHeader( "Content-type", "application/pdf" );
            res.setHeader( "Cache-Control", "no-cache" );
            res.setHeader( "Accept-Ranges", "none" );
            res.setHeader( "Content-Disposition", "inline; filename=stuff.pdf" );
            res.end( pdfData.raw, "binary" );
        }
    });
});

升级到节点 0.10 后,我第一次调用此路由时,一切都按预期工作。

但是,第二次调用路由时,应用程序崩溃并显示错误"标头已发送"。

我想看看响应中已经存在哪些标头。 因此,在发送任何标头之前,我将以下内容添加到getPDF回调的顶部。

console.log( res._headers );

在崩溃之前,这将输出:

Content-type application/pdf
Cache-Control no-cache
Accept-Ranges none
Content-Disposition inline; filname = stuff.pdf

看起来我的旧响应对象不知何故徘徊在周围? 知道这里会发生什么吗?

您可能在中间件的某个地方调用了两次 next() - 检查 auth.isAuthorized 或您正在使用的任何其他内容。如本问题所述。