首页 > 解决方案 > Angular Universal 中是否忽略了全局脚本?

问题描述

Angular Universal 似乎忽略了angular.json. 是不是我做错了什么,或者这是一个值得提交的错误?


要复制,请克隆universal-starterrepo。

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.

标签: angularangular-universal

解决方案


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

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

删除声明语句,您将看到您的函数将起作用

参考


推荐阅读