Hapi.js服务器无法启动,报错server.connection不是函数
解决Hapi.js报错:
server.connection is not a function 嘿,这个问题我之前也碰到过!原因很简单——你用的是Hapi.js v17及以上版本,而server.connection()这个方法在v17的大版本更新里被彻底移除了,官方把服务器初始化的逻辑做了简化。
给你改好的可用代码:
const Hapi = require('hapi'); // 直接在创建服务器实例时配置端口和主机 const server = Hapi.server({ port: 3000, host: 'localhost' }); // 首页路由配置 server.route({ method: 'GET', path: '/', handler: (request, h) => { // 新版Hapi不用reply,直接返回内容就行 return 'Hello World'; } }); // 启动服务器的异步写法(新版推荐) const startServer = async () => { try { await server.start(); console.log(`Server started at: ${server.info.uri}`); } catch (err) { console.error('服务器启动失败:', err); process.exit(1); } }; startServer();
几个关键的改动点:
- 删掉了单独的
server.connection()调用,把端口、主机配置直接放进Hapi.server()的参数里 - 路由handler的第二个参数从
reply换成了h(Hapi v17+的新API,reply被废弃了,现在直接返回响应内容就好) - 启动服务器用了async/await的异步写法,这是新版Hapi推荐的方式,比原来的回调逻辑更清晰
如果你非要沿用旧版写法(不推荐,因为旧版本已经停止维护),可以重新安装指定版本的Hapi:
npm install hapi@16 --save
不过还是建议用新版的写法,后续兼容性和维护性会更好。
内容的提问来源于stack exchange,提问作者ADD
相关产品推荐
相关产品推荐

