【发布时间】:2023-04-01 06:08:01
【问题描述】:
我正在使用 nodejs 和 express 创建一个 api,我想将 http2 与 ExpressJS 集成
这是我的代码:
'use strict';
const http2 = require('http2');
const fs = require('fs');
const path = require('path');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = process.env.PORT || 443;
// Middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// Routes variables
const indexRouter = require('./routes/index');
// Routes uses
app.use('/', indexRouter);
// Server configurations
const key = path.join(__dirname + '/security/key.pem');
const cert = path.join(__dirname + '/security/certificate.pem');
const options = {
key: fs.readFileSync(key),
cert: fs.readFileSync(cert)
}
const server = http2.createSecureServer(options, app);
server.on('error', err => console.log(err));
server.listen(port, () => {
console.log('Server running')
})
我正在尝试将快速服务器作为 createSecureServer() 的第二个参数传递,但我不确定我是否正确,因为我收到此错误:
[nodemon]2.0.2 [nodemon]随时重启,输入
rs[nodemon] 观看目录:. [nodemon] 观看扩展:js,mjs,json [nodemon] 开始node index.js_http_incoming.js:96 if (this.socket.readable) ^TypeError: 无法读取未定义的“可读”属性 在 IncomingMessage._read (_http_incoming.js:96:19) 在 IncomingMessage.Readable.read (stream_readable.js:491:10) 恢复时 (_stream_readable.js:976:12) 在 processTicksAndRejections (internal/process/task_queues.js:80:21) [nodemon] 应用程序崩溃 - 在开始之前等待文件更改...
应该注意,我的证书虽然是自签名的且不可靠,但可以正确加载。 如果我可以用 NodeJS 做到这一点,我尽量不使用第三方模块。有什么帮助吗?
【问题讨论】: