如何解决ASP.NET Boilerplate(ABP 3.4.1)Angular项目生产构建失败问题
解决ABP 3.4.1生产构建失败的问题
第一个错误:"let-" is only supported on ng-template elements
这个报错的核心原因是Angular版本演进后,let-语法仅支持绑定在<ng-template>标签上,而你的代码里还在使用旧的<template>标签写法。
修复步骤:
- 根据报错提示定位到对应的模板文件(就是那个包含表格循环的组件模板),把里面的
<template>标签全部替换成<ng-template>。 - 替换时保持原有绑定逻辑不变,比如:
<!-- 原错误代码 --> <template ngFor [ngForOf]="rows" let-rowz="$implicit" let-index="index"> <!-- 修正后代码 --> <ng-template ngFor [ngForOf]="rows" let-rowz="$implicit" let-index="index"> - 修改完成后重新执行
yarn run ng build --prod,这个错误应该就能消除。
第二个错误:关闭AOT后的Promise拒绝与语法错误
当你添加--aot=false后出现的语法问题,大概率是因为部分第三方依赖(比如你用到的日期选择器组件)包含未转译的ES6语法,关闭AOT后构建流程没有对这些依赖做转译处理。但非常不推荐在生产环境关闭AOT——AOT编译能大幅提升应用运行性能、减小打包体积,是生产构建的标准配置,所以优先解决第一个错误才是正确路径。
如果只是临时排查问题,可以尝试在项目配置文件(旧版本是.angular-cli.json,新版本是angular.json)中,将相关依赖加入allowedCommonJsDependencies列表,确保构建时能正确转译它们,但这只是临时方案,还是建议回到修复<template>标签的正轨上。
额外提示:
ABP 3.4.1对应的Angular版本相对老旧,记得确认你的Node.js和Yarn版本与该ABP版本兼容,避免因环境版本不匹配引发额外问题。
内容的提问来源于stack exchange,提问作者Andre Odendaal
相关产品推荐
相关产品推荐

