这似乎很简单,但我找不到任何解决方案。
那么,如何检查我的应用程序是在生产模式还是开发模式下运行?
答案 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
}