Node.js 使用Nest.js和节点v10的本机HTTP2是否可能?

Node.js 使用Nest.js和节点v10的本机HTTP2是否可能?,node.js,express,http2,nestjs,Node.js,Express,Http2,Nestjs,我已经读到Express4.x与Node.js原生HTTP2(8.4+)不兼容,我希望Express5.x能有更多的进步。 但当我开始考虑Express5.x可能会在我的下一个Node.js项目中发布到很晚的时候——我选择了Nest.js 有人知道Nest.js是否可以与本机HTTP2支持一起使用吗 我听说的唯一一个支持这个的Node.js框架是Fastify。 或者还有其他的吗?最好是支持Express插件的;使用前面的Web服务器作为静态资源和Web应用程序本身,并使用Node.js作为AP

我已经读到Express4.x与Node.js原生HTTP2(8.4+)不兼容,我希望Express5.x能有更多的进步。 但当我开始考虑Express5.x可能会在我的下一个Node.js项目中发布到很晚的时候——我选择了Nest.js

有人知道Nest.js是否可以与本机HTTP2支持一起使用吗

我听说的唯一一个支持这个的Node.js框架是Fastify。
或者还有其他的吗?最好是支持Express插件的;使用前面的Web服务器作为静态资源和Web应用程序本身,并使用Node.js作为API,可能是最好的方法。

您可以使用包在NestJS中使用HTTP/2(和SPDY):

安装程序包
纱线添加spdy
纱线添加-D@类型/spdy
生成证书 H2通常需要TLS,因此生成新密钥和证书:

openssl-req-x509-newkey rsa:2048-nodes-sha256-keyout test.key-out test.crt
修改启动 接下来,修改
main.ts

//main.ts
异步函数引导(){
const expressApp:Express=Express();
常量spdyOpts:ServerOptions={
key:fs.readFileSync('./test.key'),
证书:fs.readFileSync('./test.crt'),
};
const server:server=spdy.createServer(spdyOpts,expressApp);
const-app:NestApplication=等待NestFactory.create(
应用模块,
新的ExpressAdapter(expressApp),
);
等待app.init();
等待服务器。聆听(3000);
}
bootstrap();
测试客户端
$curl-I-khttps://localhost:3000/
HTTP/2200
x-powered-by:Express
内容类型:text/html;字符集=utf-8
内容长度:12
etag:W/“c-Lve95gjOVATpfV8EL5X4nxwjKHE”

请注意
HTTP/2
将在响应头中发送。

我不知道您的问题的答案,但作为一种替代方法,为什么不通过它前面的Web服务器(例如Apache或Nginx)将节点保持在HTTP/1.1上,直到它更好地支持HTTP/2?老实说,在前面有一个Web服务器来获取静态资源通常会更好。