programing

Angular 애플리케이션이 프로덕션 또는 개발 모드에서 실행 중인지 확인하는 방법

nasanasas 2020. 8. 30. 08:42
반응형

Angular 애플리케이션이 프로덕션 또는 개발 모드에서 실행 중인지 확인하는 방법


이것은 쉬운 것 같지만 해결책을 찾을 수 없습니다.

그렇다면 내 앱이 프로덕션 모드 또는 개발 모드에서 실행 중인지 어떻게 확인합니까?


이 기능을 시도 할 수 있습니다 isDevMode

import { isDevMode } from '@angular/core';

...
export class AppComponent { 
  constructor() {
    console.log(isDevMode());
  }
}

참고 : 이 기능에 주의하세요 .

if(isDevMode()) {
  enableProdMode();
}

당신은 얻을 것이다

오류 : 플랫폼 설정 후 prod 모드를 활성화 할 수 없습니다.


https://angular.io/guide/deployment#enable-production-mode 의 Angular 배포 가이드에 따라 :

프로덕션 용으로 빌드 (또는 --environment = prod 플래그 추가)하면 프로덕션 모드가 활성화 됩니다. CLI에서 생성 된 main.ts작동 방식을 확인합니다.

main.ts 다음이 있습니다.

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

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

따라서 environment.production생산 중인지 확인 하십시오.

전화하고 싶지 않을 가능성이 높습니다 isDevMode(). https://angular.io/api/core/isDevMode 의 Angular API 문서에 따라 :

한 번 호출되면 값이 잠기고 더 이상 변경되지 않습니다 ... 기본적으로 사용자가이를 호출하기 전에 enableProdMode를 호출하지 않는 한 이것은 true입니다.

빌드 isDevMode()에서 호출 하면 ng build --prod항상 true가 반환되고 항상 개발자 모드에서 실행되도록 잠 깁니다. 대신 environment.production생산 중인지 확인 하십시오. 그런 다음 프로덕션 모드로 유지됩니다.


그것은 당신이 요구하는 것에 달려 있습니다 ...

mode@yurzui가 말했듯이 Angular 에 대해 알고 싶다면 호출해야 { isDevMode } from @angular/core하지만 이전에 false호출 enableProdMode해야 반환 할 수 있습니다 .

빌드 환경 을 알고 싶다면 , 즉 앱이 최소화되어 실행 중인지 여부를 확인하려면 빌드 시스템에서 빌드 변수를 설정해야합니다. Webpack예를 들어를 사용하여 definePlugin.

https://webpack.github.io/docs/list-of-plugins.html#defineplugin

new webpack.DefinePlugin({
  ENV_PRODUCTION: !!process.env.NODE_ENV
});

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

platformBrowserDynamic().bootstrapModule(AppModule); enableProdMode();

이것은 내 코드이므로 동일한 오류가 발생했습니다. 난 그냥 다음 라인 3과 4를 상호 교환 문제입니다 고정 . 따라서 부트 스트래핑 모듈 전에 --prod 모드를 활성화해야합니다.

이런 식으로 올바른 것을 넣을 수 있습니다.

enableProdMode() platformBrowserDynamic().bootstrapModule(AppModule);


isDevMode()함수 의 반환 값을 확인할 때주의해야합니다 .

내가 존재를 확인했기 때문에 내 설치가 실패 하였다 if (isDevMode)된 항상 true, 심지어 생산에 내가 그것을 선언 때문이다 import { isDevMode } from '@angular/core';.

if (isDevMode())false올바르게 반환되었습니다 .

참고URL : https://stackoverflow.com/questions/39535386/how-to-check-if-angular-application-running-in-production-or-development-mode

반응형