Ошибка: компилятор времени выполнения не загружен: при производственной сборке в Angular 7 - PullRequest
0 голосов
/ 17 октября 2019

Я работал над проектом angular 7 и реализовал отложенную загрузку модуля, как указано в app.route:

  { path: 'privacy-statement',  loadChildren: () => import('./privacy-statement/privacy-statement.module').then(m => m.PrivacyStatementModule) }

Он работает нормально на обычной подаче, но когда я обслуживаю приложение с --prodи попробуйте получить доступ к «заявлению о конфиденциальности», он выдает следующую ошибку

Ошибка: компилятор времени выполнения не загружен в n.Ht (main.fd01867a26977f516ab1.js: 1) в t.project (main.fd01867a26977f516ab1.js. :a7106ca102d40b2f087a.js: 1) в P (polyfills.a7106ca102d40b2f087a.js: 1) в P (polyfills.a7106ca102d40b2f087a.js: 1) в polyfills. Object.onInvokeTask (main.fd01867a26977f516ab1.js. 1009 * Я искал решение и обнаружил, что если я отключаю AOT (установите его в false), он работает. Но это значительно увеличивает время обслуживания, поэтому есть ли другое решение, которое не влияет на время загрузки?

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Ленивая загрузка с синтаксисом import() доступна из Angular 8, поэтому либо обновите до 8, либо используйте старый синтаксис со строкой.

loadChildren: './path/privacy-statement.module#PrivacyStatementModule'
0 голосов
/ 17 октября 2019

Использовать импорт, как вы это сделали, возможно только в AOT, если у вас включена ivy. Вы можете сделать это, добавив параметр в tsconfig.json:

"angularCompilerOptions": {
  "enableIvy": true
}

Если вы еще не хотите использовать ivy, поскольку он может еще не работать для вашего приложения, вам придется использовать старыйспособ ленивой загрузки:

{ 
  path: 'privacy-statement', 
  loadChildren: 'path/from/src/privacy-statement/privacy-statement.module#PrivacyStatementModule'
},
...