TypeScript中AJV实例化报错TS2351的问题求助
解决TypeScript + AJV构造函数报错问题
问题分析
你碰到的TS2351错误,核心原因是在Node16模块解析模式下,TypeScript对CommonJS模块的导入规则更严格——AJV作为CommonJS模块,其默认导出的构造函数无法直接通过new Ajv()调用。
解决方案
方案1:调整导入写法
改用以下方式明确获取AJV的默认导出并实例化:
import * as AjvModule from "ajv"; const Ajv = AjvModule.default; const ajv = new Ajv({ allErrors: true });
方案2:简化的命名导入
也可以直接通过命名导入的方式获取默认导出:
import { default as Ajv } from "ajv"; const ajv = new Ajv({ allErrors: true });
方案3:更新AJV到最新版
旧版本AJV的TypeScript类型定义可能存在兼容瑕疵,执行命令更新到最新版:
npm install ajv@latest --save
更新后再尝试你原来的导入写法,大概率能直接解决问题。
方案4:调整tsconfig配置(可选)
如果想保留原导入方式,可以修改tsconfig.json的模块相关配置,切换到更适合现代打包工具的解析规则:
"module": "ESNext", "moduleResolution": "Bundler"
验证
修改完成后重新执行TypeScript编译命令:
tsc
若没有报错,说明问题已解决。
内容的提问来源于stack exchange,提问作者Kripu Khadka
相关产品推荐
相关产品推荐

