Hapi.js v16.6.2启动报错:Invalid server options问题求助
解决Hapi v16.6.2中"host/port is not allowed"的服务器配置错误
嗨,我来帮你搞定这个问题!你遇到的报错核心原因是Hapi v16版本的服务器初始化语法和你写的不匹配——在v16里,host和port不能直接作为Server构造函数的顶层配置项,它们需要嵌套在connections属性里。
错误根源
你当前用的是Hapi v16.6.2,这个版本的框架要求网络连接相关参数(host、port)必须放在connections数组(或单个连接对象)中,而不是直接写在Server的根配置里。你现在的写法其实是Hapi v17+版本的语法,所以才会触发配置校验失败的错误。
修复后的代码
把你的服务器初始化代码改成下面这样,就能正常启动了:
const Hapi = require('hapi'); const server = new Hapi.Server({ connections: [ { host: 'localhost', port: 8080 } ] }); server.route({ path: '/', method: 'GET', handler: (request, response) => { response(true); }, }); server.start(() => { console.log('Server running at:', server.info.uri); });
如果你只需要单个连接,也可以用更简洁的写法:
const server = new Hapi.Server(); server.connection({ host: 'localhost', port: 8080 });
额外补充
要是之后你计划升级到Hapi v17或更高版本,那你最初的写法(直接在Server构造函数里放host和port)是完全正确的——因为v17对框架API做了彻底重构,简化了服务器配置的结构。但就当前你使用的v16.6.2版本来说,必须遵循connections的配置规则。
内容的提问来源于stack exchange,提问作者Aakash Verma
相关产品推荐
相关产品推荐

