在Angular Universal中是否会忽略全局脚本?

时间:2018-12-30 22:41:38

标签: angular angular-universal

看来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

1 个答案:

答案 0 :(得分:0)

您为什么使用declare function globalFunction(): void;

当使用声明语句时,angular假定globalFunction在其他位置定义。如果使用声明,则不会向生成的JavaScript添加任何内容-只是对编译器的提示。

删除declaration语句,您将看到函数将正常工作

Reference