Vue3升级后tsconfig失效:node_modules下TypeScript编译报错
问题:Vue3升级后TypeScript编译错误(node_modules/@vue文件被意外编译)
问题详情
Vue从2升级到3后,出现了不符合预期的TypeScript编译错误——node_modules/@vue目录下的ts文件被触发编译,但我的tsconfig中已经设置skipLibCheck: true,且在exclude字段添加了node_modules及其多种通配符变体。
项目包含三个tsconfig文件:1个位于根目录,另外2个在不同子目录中,各自有独立配置。因项目规模过大无法提供复现示例,想确认该问题是纯TypeScript问题还是与Vue相关。
我的期望是项目能正常构建,因为这些node_modules下的ts文件本不应被编译。
已尝试的无效操作
- 修改tsconfig中node_modules的多种配置写法
- 在tsconfig的exclude中添加报错文件的完整路径
- 卸载并重新安装最新版TypeScript
- 将compilerOptions.target设置为ES6和ESNext
- 删除node_modules并重新安装所有依赖
- 设置compileOnSave为false
三个tsconfig配置
根目录tsconfig
{ "compilerOptions": { "target": "es5", "inlineSourceMap": true, "skipLibCheck": true, "types": [ "node", "jquery" ] }, "exclude": [ "ClientApp/**/*", "ClientApp/**/*.js", "ClientApp/**/*.vue", "ClientAppPublic/**/*", "ClientAppPublic/**/*.js", "ClientAppPublic/**/*.vue", "Scripts/Kendo/**", "Scripts/ckeditor/**", "Scripts/core-js/**", "Scripts/moment/**", "Scripts/jquery-*", "Scripts/jquery.*.js", "Scripts/knockout-*", "Scripts/typings/**", "**/publish.ts", "node_modules", "./node_modules", "./node_modules/*", "./node_modules/**", "./node_modules/@types/node/index.d.ts", "./XULRunner21_0/**", "./XULRunner38_0/**" ] }
子目录tsconfig 2
{ "compileOnSave": false, "compilerOptions": { "allowJs": true, "allowSyntheticDefaultImports": true, "maxNodeModuleJsDepth": 2, "module": "ESNext", "moduleResolution": "Node", "noEmit": true, "target": "ESNext", "skipLibCheck": true, "baseUrl": ".", "lib": [ "ESNext", "DOM", "DOM.Iterable", "ScriptHost", "WebWorker.ImportScripts" ], "paths": { "@/*": [ "./*" ], "modules": [ "../node_modules/*" ], "vue_components/*": [ "./components/*" ], "vue_views/*": [ "./views/*" ], "directives/*": [ "./directives/*" ], "images/*": [ "../Content/documatix/Images/*" ], "legacyutil/*": [ "../App_Scripts/*" ], "scss/*": [ "../Content/documatix/*" ] }, "removeComments": true, "sourceMap": true, "typeRoots": [ "../node_modules/@types", "../node_modules/vuetify/types" ], "types": [ "node", "jquery", "vuetify" ] }, "exclude": [ "node_modules" ] }
子目录tsconfig 3
{ "compileOnSave": false, "compilerOptions": { "allowJs": true, "allowSyntheticDefaultImports": true, "maxNodeModuleJsDepth": 2, "module": "ESNext", "moduleResolution": "Node", "noEmit": true, "target": "ESNext", "skipLibCheck": true, "baseUrl": ".", "lib": [ "ESNext", "DOM", "DOM.Iterable", "ScriptHost", "WebWorker.ImportScripts" ], "paths": { "@/*": [ "./*" ], "modules": [ "../node_modules/*" ], "vue_components/*": [ "./components/*" ], "vue_views/*": [ "./views/*" ], "directives/*": [ "./directives/*" ], "images/*": [ "../Content/documatix/Images/*" ], "legacyutil/*": [ "../App_Scripts/*" ], "scss/*": [ "../Content/documatix/*" ] }, "removeComments": true, "sourceMap": true, "typeRoots": [ "../node_modules/@types", "../node_modules/vuetify/types" ], "types": [ "node", "jquery", "vuetify" ] }, "exclude": [ "node_modules" ] }
内容的提问来源于stack exchange,提问作者SChristiansen
相关产品推荐
相关产品推荐

