我已经读过Express 4.x与Node.js原生HTTP2(8.4+)不兼容,我希望Express 5.x上有更多的优势。 但是当我开始认为Express5.x可能会在我的下一个Node.js项目中发布时,我来到了Nest.js。
有没有人知道Nest.js是否可以与本机HTTP2支持一起使用?
我听说过唯一支持这个的Node.js框架是Fastify。 或者还有其他吗?优选支持Express插件的。
答案 0 :(得分:1)
正如巴里·波拉德(Barry Pollard)所说;无论如何,在前端使用Web服务器获取静态资源和Webapp本身,以及将Node.js用于API可能是最好的方法。
答案 1 :(得分:1)
您可以使用node-spdy软件包在NestJS中使用HTTP / 2(和SPDY):
yarn add spdy
yarn add -D @types/spdy
H2通常需要TLS,因此请生成新的密钥和证书:
openssl req -x509 -newkey rsa:2048 -nodes -sha256 -keyout test.key -out test.crt
接下来,修改main.ts
:
// main.ts
async function bootstrap() {
const expressApp: Express = express();
const spdyOpts: ServerOptions = {
key: fs.readFileSync('./test.key'),
cert: fs.readFileSync('./test.crt'),
};
const server: Server = spdy.createServer(spdyOpts, expressApp);
const app: NestApplication = await NestFactory.create(
AppModule,
new ExpressAdapter(expressApp),
);
await app.init();
await server.listen(3000);
}
bootstrap();
$ curl -I -k https://localhost:3000/
HTTP/2 200
x-powered-by: Express
content-type: text/html; charset=utf-8
content-length: 12
etag: W/"c-Lve95gjOVATpfV8EL5X4nxwjKHE"
在响应头中发送通知HTTP/2
。