3

我无法启动我的 Node 应用程序。我收到“TypeError:无法调用未定义的方法‘push’”错误。这是我的代码:

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。

4

2 回答 2

1

根据您的评论,您使用的是 HTTP/1.1。您需要使用 HTTP2/SPDY 服务才能推送工作。

于 2015-12-02T18:51:51.600 回答
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()function 的回调函数不接受任何参数。见第 49 行,文件stream-test.js

于 2014-02-17T12:57:22.503 回答