Производственная сборка не может найти информацию об окружении, но сборка разработки выполняется без ошибок

У меня есть приложение angular 7, которое при сборке в режиме разработки компилируется и обслуживается без ошибок. Но когда я создаю приложение с производственными настройками, оно компилируется без проблем, но не может найти информацию о среде и просто ошибки в браузере.

vendor.d1094f98a9a59a44ad59.js:1 ERROR ReferenceError: env is not defined
    at new n (main.04dfe8e133fc5e316d84.js:1)
    at Vs (vendor.d1094f98a9a59a44ad59.js:1)
    at Ms (vendor.d1094f98a9a59a44ad59.js:1)
    at mu (vendor.d1094f98a9a59a44ad59.js:1)
    at hu (vendor.d1094f98a9a59a44ad59.js:1)
    at Object.Du [as createRootView] (vendor.d1094f98a9a59a44ad59.js:1)
    at e.create (vendor.d1094f98a9a59a44ad59.js:1)
    at e.create (vendor.d1094f98a9a59a44ad59.js:1)
    at t.bootstrap (vendor.d1094f98a9a59a44ad59.js:1)
    at vendor.d1094f98a9a59a44ad59.js:1
mi @ vendor.d1094f98a9a59a44ad59.js:1
vendor.d1094f98a9a59a44ad59.js:1 ERROR Error: Uncaught (in promise): ReferenceError: env is not defined
ReferenceError: env is not defined
    at new n (main.04dfe8e133fc5e316d84.js:1)
    at Vs (vendor.d1094f98a9a59a44ad59.js:1)
    at Ms (vendor.d1094f98a9a59a44ad59.js:1)
    at mu (vendor.d1094f98a9a59a44ad59.js:1)
    at hu (vendor.d1094f98a9a59a44ad59.js:1)
    at Object.Du [as createRootView] (vendor.d1094f98a9a59a44ad59.js:1)
    at e.create (vendor.d1094f98a9a59a44ad59.js:1)
    at e.create (vendor.d1094f98a9a59a44ad59.js:1)
    at t.bootstrap (vendor.d1094f98a9a59a44ad59.js:1)
    at vendor.d1094f98a9a59a44ad59.js:1
    at M (polyfills.65f19a590318fc6860f7.js:1)
    at polyfills.65f19a590318fc6860f7.js:1
    at t.invokeTask (polyfills.65f19a590318fc6860f7.js:1)
    at Object.onInvokeTask (vendor.d1094f98a9a59a44ad59.js:1)
    at t.invokeTask (polyfills.65f19a590318fc6860f7.js:1)
    at e.runTask (polyfills.65f19a590318fc6860f7.js:1)
    at g (polyfills.65f19a590318fc6860f7.js:1)

Сборка в режиме разработки работает как положено. Не уверен, почему производство отличается. Ошибок в терминале нет.

Ожидаемая рабочая сборка будет соответствовать сборке для разработчиков.


person myLogicIsWrong    schedule 18.02.2019    source источник
comment
Вы заполнили файл environment.prod.ts теми же данными, что и этот файл environment.ts?   -  person kklimczak    schedule 18.02.2019
comment
Да, файлы были одинаковыми, и в файлах среды не было ошибок.   -  person myLogicIsWrong    schedule 18.02.2019


Ответы (2)


Похоже, что-то происходит с вашим файлом environment.prod.ts в environments/environment.prod.ts, убедитесь, что это соответствует вашему файлу environment.ts. При сборке с помощью prod environment.prod.ts заменяет environment.ts. Взгляните на имена в двух файлах, похоже, что в вашем environment.prod.ts у вас может быть

export const environment = {
    production: true,
    etc...
}

вместо

export const env = {
    production: true,
    etc...
}

Похоже, это ошибка из подсказки. http://tattoocoder.com/angular-cli-using-the-environment-option/ — хороший URL-адрес для лучшего знакомства с окружением в angular.

person Alex Dunlop    schedule 18.02.2019
comment
Это было хорошее предложение, с которого я начал отладку, но файлы были одинаковыми, а скомпилированное приложение имело правильную информацию о продукте в файле main.js. - person myLogicIsWrong; 18.02.2019

Это было оскорбительное заявление:

import { environment as env } from '@env/environment';

Чтобы исправить ошибку, просто удалите псевдоним и обновите эту строку (и любую ссылку) на:

import { environment } from '@env/environment';

Кто-нибудь знает, почему использование синтаксиса as env вызвало эту проблему?

person myLogicIsWrong    schedule 18.02.2019
comment
У меня тоже была эта ошибка не так давно, интересно узнать, почему это вызывает ошибки времени выполнения в сборках prod. - person Ric; 18.02.2019