Visual Studio 2017中Angular6+ASP.NET Core2编译报错求助
解决ASP.NET Core 2 + Angular 6应用中output_ast.d.ts的TypeScript错误
这个错误主要是因为Visual Studio 2017默认会扫描并尝试编译node_modules目录下的第三方TypeScript文件,加上它使用的TypeScript版本可能和项目依赖版本不匹配,最终引发了const enum的编译兼容性问题。下面是几个针对性的解决步骤:
1. 让Visual Studio使用项目本地的TypeScript版本
VS2017自带的TypeScript版本可能低于你项目中指定的~2.7.2,这会导致对const enum语法的处理出现偏差:
- 打开Visual Studio,点击顶部菜单栏的 工具 > 选项
- 依次展开 文本编辑器 > JavaScript/TypeScript > IntelliSense
- 在“使用TypeScript版本”下拉菜单中,选择 从当前项目的node_modules文件夹获取,或者直接指定项目内
node_modules/typescript/bin/tsc.exe的路径 - 重启VS后重新构建项目
2. 配置项目排除node_modules目录的编译
VS默认会处理项目中所有.ts文件,但node_modules里的第三方代码完全不需要它来编译。修改项目的.csproj文件来排除这些目录:
<ItemGroup> <Content Remove="ClientApp\node_modules\**" /> <None Include="ClientApp\node_modules\**" /> </ItemGroup>
添加这段配置后,VS会忽略node_modules下的所有文件,把前端编译工作完全交给Angular CLI处理。
3. 调整tsconfig.json的编译选项
在ClientApp目录下的tsconfig.json中,给compilerOptions添加相关配置:
{ "compilerOptions": { "target": "es2017", "preserveConstEnums": true, // 保留你原有的其他配置项... } }
preserveConstEnums会让TypeScript保留const enum的原始定义,避免编译时出现初始化表达式的校验错误。
4. 清理缓存并重新安装依赖
依赖缓存也可能导致版本不兼容问题,执行以下操作:
- 删除
ClientApp目录下的node_modules文件夹和package-lock.json文件 - 打开命令行进入
ClientApp目录,运行npm install重新安装所有依赖 - 重新构建整个应用
这些步骤应该能彻底解决你遇到的const enum初始化错误。
内容的提问来源于stack exchange,提问作者Jakubbb
相关产品推荐
相关产品推荐

