TypeError:dest.end不是函数

Hon*_*iao 5 node.js express http2

我正在尝试使用HTTP / 2。我的快速版本是5.0.0-alpha.2,http2版本是3.3.4。

我想http2应该可以与express 5一起使用

const http2 = require('http2');
// const http2 = require('spdy');  // using spdy package here, everything works perfect

const options = {
  key: fs.readFileSync(path.join(__dirname, 'private', 'server.key')),
  cert: fs.readFileSync(path.join(__dirname, 'private', 'server.crt'))
};

const server = http2
  .createServer(options, app)
  .listen(3000, err => {
    if (err) throw new Error(err);

    // I can see "Listening..." message, which means the server starts running well.
    console.log('Listening...');
  });
Run Code Online (Sandbox Code Playgroud)

服务器开始正常运行,但是当我打开客户端网站时,它在终端中给了我这个错误:

_stream_readable.js:512
    dest.end();
         ^

TypeError: dest.end is not a function
    at Stream.onend (_stream_readable.js:512:10)
    at Stream.g (events.js:286:16)
    at emitNone (events.js:91:20)
    at Stream.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:975:12)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
Run Code Online (Sandbox Code Playgroud)

Hon*_*iao 2

Express似乎还没有支持node-http2 。请在 github 上跟踪此问题对模块 http 的支持

同时,您可以继续使用node-spdy

const spdy = require('spdy');

const options = {
  key: fs.readFileSync(path.join(__dirname, 'private', 'server.key')),
  cert: fs.readFileSync(path.join(__dirname, 'private', 'server.crt'))
};

const server = spdy
  .createServer(options, app)
  .listen(3000, err => {
    if (err) throw new Error(err);
    console.log('Listening...');
  });
Run Code Online (Sandbox Code Playgroud)