如何检查Angular应用程序是否在生产或开发模式下运行

时间:2016-09-16 15:40:52

标签: angular production

这似乎很简单,但我找不到任何解决方案。

那么,如何检查我的应用程序是在生产模式还是开发模式下运行?

6 个答案:

答案 0 :(得分:132)

您可以尝试此功能 isDevMode

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

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

一个注释:小心使用此功能

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

你会得到

  

错误:平台设置后无法启用prod模式

答案 1 :(得分:8)

根据Angular部署指南,位于https://angular.io/guide/deployment#enable-production-mode

  

为生产而构建(或附加--environment = prod标志)   启用生产模式查看CLI生成的main.ts,了解如何   这行得通。

main.ts具有以下内容:

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

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

因此,请检查environment.production以查看您是否正在生产中。

您很可能不想致电isDevMode()。根据{{​​3}}上的Angular API文档:

  

调用一次后,该值将被锁定,不会再更改...   默认情况下,这是真的,除非用户在调用它之前调用enableProdMode。

我发现从isDevMode()构建中调用ng build --prod总是返回true,并且总是将您锁定在开发模式下运行。相反,请检查environment.production以查看您是否正在生产中。然后您将保持生产模式。

答案 2 :(得分:2)

这取决于你的要求......

如果您想知道Angular的mode,正如@yurzui所说,您需要致电{ isDevMode } from @angular/core,但只有在您之前致电false时才会返回enableProdMode它。

如果您想了解构建环境,换句话说,如果您的应用程序正在运行缩小,则需要在构建系统中设置构建变量...使用{{1例如,你应该看看Webpack

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

definePlugin

答案 3 :(得分:1)

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);

答案 4 :(得分:1)

请注意检查isDevMode()函数的返回值。

我的设置失败,因为我正在检查存在性:if (isDevMode)始终为true,即使在生产中也是如此,因为我用import { isDevMode } from '@angular/core';声明了它。

if (isDevMode())正确返回了false

答案 5 :(得分:0)

只需检查环境文件中存在的生产变量,对于生产模式将为true,对于开发为false。

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

if (environment.production) {
  // for production
} else {
  // for development
}