ExperimentalWarning:http2 模块是一个实验性 API
Posted
技术标签:
【中文标题】ExperimentalWarning:http2 模块是一个实验性 API【英文标题】:ExperimentalWarning: The http2 module is an experimental API 【发布时间】:2019-02-14 17:12:42 【问题描述】:我在 Node JS 10.9 中使用 HAPI JS 和 HTTP/2。当我使用这个例子启动服务器时,
const fs = require('fs')
const Hapi = require('hapi')
const http2 = require('http2')
const server = new Hapi.Server()
server.connection(
listener: http2.createServer(),
host: 'localhost',
port: 3000
)
server.route(
method: 'GET',
path:'/hello',
handler: function (request, reply)
return reply('Hello, World!')
)
server.start((err) =>
if (err) console.error(err)
console.log(`Started $server.connections.length connections`)
)
我在控制台上收到此警告
(node:16600) ExperimentalWarning: The http2 module is an experimental API.
我在网上找不到相关的解释,我们是否可以在生产模式下使用它?可以在生产模式下使用 HTTP/2 并出现此类警告吗?
【问题讨论】:
您使用的是哪个版本的 node.js?根据 10.10 的文档,http2
是稳定的,因此您不应该在最新版本中收到该警告。
节点版本 10.9
所以我们应该使用较新版本的节点> = 10.10.0,我在我的阿波罗服务器上的节点--version v10.0.0 上也收到了这个警告,而且我的服务器启动速度也很慢。
【参考方案1】:
正如@DoMiNeLa10 所说,实验性警告已在 10.10 中删除:
https://github.com/nodejs/node/pull/22716:
http2:
◦ http2 模块不再是实验性的。 #22466
这里很好地讨论了使其非实验性所涉及的所有工作:https://github.com/nodejs/node/issues/19453
【讨论】:
以上是关于ExperimentalWarning:http2 模块是一个实验性 API的主要内容,如果未能解决你的问题,请参考以下文章
ExperimentalWarning: The fs.promises API is experimental
如何使用 nodejs 模块 http2 将 http2 与 ExpressJS 集成?
http2 中的 half close 有啥作用? http2中流状态的本地和远程之间的区别是啥?