angular - 将 javascript 代码注入 Angular 模板
问题描述
我正在尝试将 js 脚本动态加载到 Angular 模板中。它工作得很好,在开发模式下源代码是正确的,但在生产模式下我得到了一些错误的代码。
下面是用于将 js 脚本注入模板的代码:
ngAfterViewInit() {
var s = this.document.createElement("script");
s.src = this.src;
s.type = "text/javascript";
this.elementRef.nativeElement.appendChild(s);
}
但在 prod 模式下,我得到了以下代码:
<script src="//myscript.js" type="91c3f6326904bab9258c3483-text/javascript" />
为什么type
属性被改变了?
期望值是type="text/javascript"
但得到type="91c3f6326904bab9258c3483-text/javascript"
解决方案
这称为散列模式,当您使用 ng build --prod angular 自动散列所有文件以禁用散列尝试使用:ng build --prod --output-hashing none
设置 --output-hashing none 将创建类似于 main.js 的文件,而不是 main.b35d16684f410b5c0406.js这将删除缓存破坏。
推荐阅读
- docker - 处理以前的命令后,在 Docker 中找不到 npm
- python - 通过 SRA 到 FASTQ 文件。蟒蛇 | 网址错误
- pandas - 在网络抓取中未正确调用 Pandas DataFrame 构造函数
- xml - 使用 RestTemplate SpringBoot 2.3.3 预防 XXE
- javascript - 图的邻接表实现中删除顶点方法的时间复杂度
- javascript - 从列表中过滤掉作为数组中另一个字符串的子字符串的所有字符串
- javascript - file-saver.js,调用 saveAs 时出现错误?
- javascript - 使用切换手风琴切换切换图像,wordpress avada
- amazon-web-services - 如何使用/不使用 Glue Crawler 自动化 ALTER TABLE ADD PARTITIONS
- html - 在 flexbox 中每行放置 2 个项目