Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 升级到节点0.10后出现的问题_Javascript_Node.js_Express - Fatal编程技术网

Javascript 升级到节点0.10后出现的问题

Javascript 升级到节点0.10后出现的问题,javascript,node.js,express,Javascript,Node.js,Express,我一直在运行Node 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 );

我一直在运行Node 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后,我第一次调用此路由时,一切正常

但是,在第二次调用路由时,应用程序会崩溃,并出现错误“Headers ready sent”

我想看看响应中已经出现了哪些标题。因此,在发送任何标题之前,我在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或您正在使用的任何其他名称。如中所述。

@Benjamin-阅读这些更改后,我不清楚我做错了什么。我并没有暗示这可以解决您的问题(根据您提供的信息,我也看不到这一点,我认为这很有趣-因此投票结果是一致的)。我只是想用这个来评论一下,因为这是一个很好的开始。你能展示一个堆栈跟踪和更多的代码吗?您显示的代码没有问题。根据其他答案(),您确定没有调用
next()
两次吗?您的身份验证代码调用它吗?我们是否碰到了错误块,并导致它碰到了下一个