2014-02-17 54 views
3

我在啓動Node應用程序時遇到問題。我得到「TypeError:無法調用未定義」錯誤的方法「推」。 這裏是我的代碼:Nodejs - SPDY推送請求錯誤

spdy.createServer(credentials, app).listen(app.get('port'), function(req, res) { 
res.push('public/js/bootstrap.min.js', {'content-type': 'application/javascript'}, function(err, stream) { 
     stream.end('alert("hello from push stream!")'); 
     }); 
res.push('public/js/jquery.min.js', {'content-type': 'application/javascript'}, function(err, stream) { 
     stream.end(); 
     }); 
res.push('public/css/bootstrap.min.css', {'content-type': 'text/css'}, function(err, stream) { 
     stream.end(); 
     }); 

     // write main response body and terminate stream 
     res.end('Hello World!'); 

console.log('Express HTTPS SPDY server listening on port ' + app.get('port')); 
} ); 

我正在SDPY版本1.19.2和版本的NodeJS 0.10.25。

回答

0

試試這個:

// set the root path of Express server 
app.use(express.static(__dirname+'/public'); 

app.use(function(req, res) { 
    // your res.push code is here. 
    var stream = res.push('/js/bootstrap.min.js', {'content-type': 'application/javascript'}); 
    stream.on('acknowledge', function() { 
    console.log('stream ACK'); 
    }); 
    stream.on('error', function() { 
    console.log('stream ERR'); 
    }); 
    stream.end('alert("stream SUCCESSFUL");'); 
    res.end('<script src="/js/bootstrap.min.js"></script>'); 
}); 

spdy.createServer(credentials, app).listen(app.get('port')); 

傳遞給listen()功能的回調函數沒有參數。請參見第49行,文件stream-test.js

+0

錯誤已停止顯示。但是當我看着Firefox 27的網絡檢查員時,我仍然可以看到在HTML文件之後獲取的文件。我試圖讓他們在同一時間下載。 –

+0

服務器返回的響應是什麼? – bnuhero

+0

content-length:852 content-type:text/html; charset = utf-8 etag:「 - 1294749726」 status:200 OK 版本:HTTP/1.1 x-powered-by:Express –

1

根據您的comment,您使用的是HTTP/1.1。您需要使用HTTP2/SPDY才能正常工作。