Глобальные скрипты игнорируются в Angular Universal? - PullRequest
0 голосов
/ 31 декабря 2018

Похоже, что Angular Universal игнорирует список глобальных сценариев, определенных в angular.json.Есть ли что-то, что я делаю неправильно, или это ошибка стоит регистрировать?


Чтобы воспроизвести, клонируйте репо universal-starter.

In 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», Мир!"выводится на консоль JavaScript.

Теперь создайте приложение Universal, используя npm run build:prerender ... вы должны увидеть ошибку: ReferenceError: globalFunction is not defined.

1 Ответ

0 голосов
/ 31 декабря 2018

почему вы используете declare function globalFunction(): void;?

, когда вы используете объявление, angular предполагает, что globalFunction определено в другом месте.Если вы используете объявить, к сгенерированному JavaScript ничего не добавляется - это просто подсказка компилятору.

Удалите оператор объявления, и вы увидите, что ваша функция будет работать

1010 * Reference *

...