这似乎是一个简单的问题,但我找不到任何解决方案。
那么,我如何检查我的应用程序正在运行的是否为生产模式或开发模式?
这似乎是一个简单的问题,但我找不到任何解决方案。
那么,我如何检查我的应用程序正在运行的是否为生产模式或开发模式?
您可以使用此函数 isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
一个注意事项: 在使用这个函数时要小心
if(isDevMode()) {
enableProdMode();
}
您将会得到:
Error: Cannot enable prod mode after platform setup
环境变量
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') {
//
}
main.ts
以了解其工作原理。
main.ts
包含以下内容:import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
因此,请检查environment.production
以查看您是否处于生产环境。
最可能的情况是您不想调用isDevMode()
。 根据Angular API文档https://angular.io/api/core/isDevMode:
调用一次后,该值将被锁定并且不会再更改... 默认情况下,这是true,除非用户在调用此函数之前调用enableProdMode。
我发现从ng build --prod
构建中调用isDevMode()
总是返回true,并始终将您锁定为运行在开发模式下。 相反,请检查environment.production
以查看您是否处于生产环境。 然后您将保持在生产模式下。
isDevMode()
是完全可以胜任的。 - StriplingWarrior只需检查环境文件中的 production 变量,它在生产模式下为 true,在开发模式下为 false。
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}
如果你想知道 Angular 的模式,正如 @yurzui 所说,你需要调用 { isDevMode } from @angular/core
。但是只有在调用 enableProdMode
之前,它才可能返回 false
。
如果你想知道构建环境,换句话说,你的应用程序是否在缩小运行,你需要在构建系统中设置一个构建变量...例如,使用 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();
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
isDevMode()
函数的返回值。if (isDevMode)
总是返回 true
,即使在生产环境中,因为我使用了 import { isDevMode } from '@angular/core';
。
if (isDevMode())
正确地返回了 false
。ng build --prod=true
构建您的应用程序。 - Sathish Kumar k kif ( isDevMode )
只是检查标识符 isDevMode 是否被定义、不为null、不为空且不为零。由于该标识符在 @angular/core
中被定义,因此if() 语句将始终返回 true。现在,if ( isDevMode() )
实际上会调用该函数,并且它将返回是否处于开发环境。 - Wilfredo Pomierdeclare let process: any;
const env = process.env.NODE_ENV;
export const environment = {
apiURL: (env === 'production')
? 'https://example.com/api'
: 'http://localhost:8080/api'
};
platformBrowserDynamic().bootstrapModule(AppModule);
之前,你需要先启用它。 - yurzuiconsole.log("Angular 处于开发模式:" + isDevMode());
- Michael