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

max*_*lec 100 production angular

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

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

yur*_*zui 162

你可以尝试这个函数isDevMode

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

...
export class AppComponent { 
  constructor() {
    console.log(isDevMode());
  }
}
Run Code Online (Sandbox Code Playgroud)

一个注意事项:小心这个功能

if(isDevMode()) {
  enableProdMode();
}
Run Code Online (Sandbox Code Playgroud)

你会得到

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

  • https://angular.io/api/core/isDevMode “调用一次后,该值被锁定,不会再改变。” 答案应该包括文档和此警告! (2认同)

小智 22

根据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();
}
Run Code Online (Sandbox Code Playgroud)

所以检查一下environment.production你是否在制作中.

很可能你不想打电话isDevMode().根据https://angular.io/api/core/isDevMode上的Angular API文档:

调用一次后,该值被锁定并且不再更改...默认情况下,这是正确的,除非用户在调用此函数之前调用enableProdMode.

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

  • 这应该是公认的答案。(正确的文档链接和解释。) (3认同)
  • 该值不会改变这一事实并不意味着您不想调用它。当应用程序运行时,您不应该在开发模式和生产模式之间切换。因此,当您尝试确定是否应该启用生产模式时,环境变量是正确的选择,但如果您有一个服务需要在开发模式下表现稍有不同,则“isDevMode()”是实现这一目标的完美方法。 (2认同)

小智 10

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

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

if (environment.production) {
  // for production
} else {
  // for development
}
Run Code Online (Sandbox Code Playgroud)


Hit*_*nds 5

这取决于你在问什么......

如果你想了解modeAngular,正如@yurzui 所说,你需要调用,{ isDevMode } from @angular/corefalse只有enableProdMode在它之前调用它才能返回。

如果您想知道构建环境,换句话说,如果您的应用程序是否正在运行,您需要在您的构建系统中设置一个构建变量...Webpack例如,您应该查看definePlugin.

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

new webpack.DefinePlugin({
  ENV_PRODUCTION: !!process.env.NODE_ENV
});
Run Code Online (Sandbox Code Playgroud)