You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hapi使用Joi校验请求Payload时的TypeScript类型错误修复咨询

错误修复方案

错误提示(中文翻译)

类型“ObjectSchema”无法分配给类型“RouteOptionsResponseSchema | undefined”。
类型“import("/node_modules/@types/hapi__joi/index").ObjectSchema”中缺少属性“artifact”,但类型“import("/node/node_modules/joi/lib/index").ObjectSchema”中需要该属性。ts(2)

问题原因

项目中同时存在两个版本的Joi相关包/类型定义:@types/hapi__joi(旧版@hapi/joi的类型文件)和原生joi包,二者类型定义不兼容,导致类型校验冲突。

修复步骤

1. 统一Joi依赖

根据你使用的Hapi版本选择对应Joi:

  • 若使用@hapi/hapi框架,推荐配套用@hapi/joi,执行以下命令清理并安装正确依赖:
# 卸载原生joi和多余的类型包
npm uninstall joi @types/hapi__joi
# 安装@hapi/joi(自带类型定义,无需额外装@types)
npm install @hapi/joi
  • 若要使用最新原生joi包(需Hapi v20+版本支持),执行:
# 卸载@hapi/joi和旧类型包
npm uninstall @hapi/joi @types/hapi__joi
# 安装最新joi
npm install joi

2. 修正代码中的Joi导入

确保代码中所有Joi导入路径和依赖一致:

  • 使用@hapi/joi时:
import Joi from '@hapi/joi';
  • 使用原生joi时:
import Joi from 'joi';

3. 刷新类型校验

重启VSCode,或通过Ctrl+Shift+P打开命令面板,执行TypeScript: Restart TS Server来清除类型缓存,刷新校验结果。

内容的提问来源于stack exchange,提问作者mxcdh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:01:00