angular - Angular Universal 中是否忽略了全局脚本?
问题描述
Angular Universal 似乎忽略了angular.json
. 是不是我做错了什么,或者这是一个值得提交的错误?
要复制,请克隆universal-starter
repo。
在src/app/app.component.ts
添加此函数声明:
declare function globalFunction(): void;
并在构造函数中调用它:
export class AppComponent {
constructor() { globalFunction(); }
}
接下来,创建文件src/javascripts.js
并将其添加到其中:
function globalFunction() {
console.log("Hello, world!");
}
最后,编辑angular.json
新的 JavaScript 文件并将其添加到scripts
数组中:
"scripts": [
"src/javascripts.js"
]
运行ng serve
并访问http://localhost:4200
...你应该看到“Hello, world!” 打印到 JavaScript 控制台。
现在使用npm run build:prerender
...构建通用应用程序,您应该会看到错误:ReferenceError: globalFunction is not defined
.
解决方案
你为什么用declare function globalFunction(): void;
?
当您使用声明语句时,角度假定在globalFunction
其他地方定义。如果您使用声明,则不会向生成的 JavaScript 添加任何内容 - 它只是对编译器的提示。
删除声明语句,您将看到您的函数将起作用