Angular почему встроенное приложение выдает ошибку не может включить режим Prod? - PullRequest
1 голос
/ 29 апреля 2020

Я создал приложение angular, используя ng build --prod, и при попытке запустить его появилось сообщение об ошибке:

Uncaught Error: Невозможно включить режим prod после настройки платформы.

В моем api.service.ts на вершине сервиса я использовал isDevMode(), если я тестирую на localhost:

if (isDevMode()) {
  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/json',
      // 'Authorization': "Basic " + btoa(user + ":" + password),
      'Authorization': `Basic ${btoa(`${user}:${password}`)}`,
      'Access-Control-Allow-Origin': '*'
    })
  };
} else {
  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/json',
      'Access-Control-Allow-Origin': '*'

    })
  };
}

В main.ts:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));

И в environment.ts:

export const environment = {
  production: false
};

Я пытался проверить это сообщение в переполнении стека, но никаких результатов из этого и этого сообщения на github .

РЕДАКТИРОВАТЬ

environment.prod.ts:

export const environment = {
  production: true
};

1 Ответ

1 голос
/ 29 апреля 2020

Вы не можете вызвать isDevMode() до вызова enableProdMode (см. здесь ).

Вы импортируете AppModule в файл main.ts перед вызовом enableProdMode. Этот импорт, в свою очередь, импортирует ваш сервисный файл, который имеет проверку isDevMode вне класса из того, что я понял.

Попробуйте переместить инициализацию httpOptions в ваш конструктор сервиса.

Примечание Если переменная имеет статус c и инициализирована при объявлении, у вас возникнет та же проблема.

Если вы хотите оставить инициализацию вне класса, вы можете вместо этого проверьте свою среду

import { environment } from './environments/environment';

 if (environment.production) {
    httpOptions = {

Кстати, заголовок Access-Control-Allow-Origin является заголовком ответа сервера и не должен устанавливаться в запросе на стороне клиента.

...