[angular] 프로덕션 또는 개발 모드에서 Angular 애플리케이션이 실행 중인지 확인하는 방법
이것은 쉬운 것처럼 보이지만 해결책을 찾지 못했습니다.
그렇다면 앱이 프로덕션 모드 또는 개발자 모드에서 실행되고 있는지 어떻게 확인합니까?
답변
이 기능을 사용할 수 있습니다 isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
참고 사항 : 이 기능에 주의 하십시오
if(isDevMode()) {
enableProdMode();
}
당신은 얻을 것이다
오류 : 플랫폼 설정 후 prod 모드를 사용할 수 없습니다
다른 옵션
환경 변수
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
webpack process.env.NODE_ENV 변수에 의해 주입
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
답변
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를 반환하고 항상 dev 모드에서 실행되도록 잠급니다. 대신 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
올바르게 반환되었습니다 .
답변
환경 파일에 존재하는 생산 변수를 확인하기 만하면 생산 모드에서는 true이고 개발에서는 false입니다.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}