1

我已经构建了我的 Angular 应用程序ng build --prod,当我尝试启动它时,出现了一个错误:

未捕获的错误:平台设置后无法启用 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
};
4

1 回答 1

2

你不能在被调用isDevMode()之前enableProdMode调用(见这里)。

AppModulemain.ts调用enableProdMode. _ 该导入将依次导入您的服务文件,isDevMode根据我的理解,该文件在课堂之外进行了检查。

httpOptions尝试在您的服务构造函数中移动初始化。

注意如果变量是静态的并且在声明时已初始化,您将遇到同样的问题。

如果您想将初始化留在课堂之外,您可以检查您的环境

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

 if (environment.production) {
    httpOptions = {

顺便说一句,标头Access-Control-Allow-Origin是服务器响应标头,不应在客户端请求上设置。

于 2020-04-29T13:36:45.753 回答