typescript-axios openapi生成器导入报错TS1371/TS1444问题咨询
问题现象
Vue3 + TypeScript项目中,使用@openapitools/openapi-generator-cli的typescript-axios模板生成接口模型文件时,触发两类TypeScript导入错误:
TS1371: This import is never used as a value and must use 'import type' because 'importsNotUsedAsValues' is set to 'error'. TS1444: 'ExampleDto' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled.
使用的生成命令如下:
npx @openapitools/openapi-generator-cli generate -i ../path/to/webapi-spec.yml -g typescript-axios -o ./src/generated/openapi --additional-properties=withSeparateModelsAndApi=true,apiPackage=api,modelPackage=models --global-property models
报错根因:Vue3脚手架创建的TS项目默认开启严格类型导入校验,要求所有仅作类型使用的导入必须使用import type语法,而默认配置下生成器输出的是普通值导入语句,不符合校验规则。
解决方法
方案1:修改生成器参数,直接输出合规代码(优先选择)
typescript-axios模板内置useTypeImports配置项,设为true后,生成的所有类型导入会自动采用import type语法,从根源避免报错。
修改生成命令,在--additional-properties中追加useTypeImports=true即可:
npx @openapitools/openapi-generator-cli generate -i ../path/to/webapi-spec.yml -g typescript-axios -o ./src/generated/openapi --additional-properties=withSeparateModelsAndApi=true,apiPackage=api,modelPackage=models,useTypeImports=true --global-property models
注意:该参数需要openapi-generator-cli版本≥6.0.0,本地版本过低的话先升级cli再执行。
方案2:生成后自动修正导入格式
受版本限制无法用上述参数的话,可在文件生成后通过工具批量修正导入语句:
- 用ESLint自动修复:在项目ESLint配置中开启
@typescript-eslint/consistent-type-imports: error规则,每次生成文件后执行eslint ./src/generated/openapi --fix,工具会自动把所有仅作类型使用的普通导入替换为import type格式。 - 写脚本批量替换:写简易Node脚本遍历生成目录下的.ts文件,正则匹配模型间的导入语句统一替换为类型导入,生成命令执行完后跑一次脚本即可。
方案3:调整TS配置关闭校验(不推荐)
无严格导入校验需求的话,可修改根目录tsconfig.json关闭触发报错的配置项:
TypeScript 4.x版本配置:
{ "compilerOptions": { "importsNotUsedAsValues": "remove", "preserveValueImports": false } }
TypeScript 5.x及以上版本,上述两个配置已被整合,直接设置:
{ "compilerOptions": { "verbatimModuleSyntax": false } }
该方案会关闭全项目的类型导入校验,可能引入不必要的运行时打包依赖,非特殊兼容场景不建议使用。
内容的提问来源于stack exchange,提问作者lando
相关产品推荐
相关产品推荐

