看来Angular Universal忽略了angular.json
中定义的全局脚本列表。我是否有做错的事情,还是值得提交的错误?
要复制,请克隆universal-starter
存储库。
在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
...您应该看到“你好,世界!”打印到JavaScript控制台。
现在使用npm run build:prerender
构建通用应用程序...您应该看到错误:ReferenceError: globalFunction is not defined
。
答案 0 :(得分:0)
您为什么使用declare function globalFunction(): void;
?
当使用声明语句时,angular假定globalFunction
在其他位置定义。如果使用声明,则不会向生成的JavaScript添加任何内容-只是对编译器的提示。
删除declaration语句,您将看到函数将正常工作