首次使用Hapi搭建后端:请求触发服务崩溃问题排查
问题解决:Hapi服务请求后崩溃报错
Cannot read properties of null (reading 'statusCode') 这个错误是Hapi内部处理响应时的兼容性问题,结合你的Node.js版本和运行方式,以下是针对性的解决方法:
方案1:降级Hapi版本适配Node.js 16
Hapi v21及以上版本要求Node.js 18+,而你使用的是Node.js 16.17.0,版本不匹配导致内部逻辑异常。执行命令降级到兼容版本:
npm install @hapi/hapi@20 --save
重新启动服务后测试请求,问题大概率会解决。
方案2:移除babel-node,直接用Node.js原生ES模块支持
Node.js 16已经原生支持ES模块,无需babel转译,这是最直接的解决方式:
- 在项目根目录的
package.json中添加配置:
"type": "module"
- 直接用原生Node命令启动服务:
node src/server.js
方案3:调整Babel配置(若必须使用babel-node)
如果你有必须用babel-node的场景,需确保Babel配置完全适配Node.js 16:
- 安装必要依赖:
npm install @babel/core @babel/node @babel/preset-env --save-dev
- 项目根目录创建
.babelrc文件:
{ "presets": [ ["@babel/preset-env", { "targets": { "node": "16.17.0" } }] ] }
- 重新用
npx babel-node src/server.js启动服务。
内容的提问来源于stack exchange,提问作者Prakhar Sharma
相关产品推荐
相关产品推荐

