ExpressionChangedAfterItHasBeenCheckedError 在生产中
ExpressionChangedAfterItHasBeenCheckedError in Production
版本详情
- Angular版本:7.3.7
我读到了这个错误,发现它无法进入生产环境,但我在生产环境中遇到了 ExpressionChangedAfterItHasBeenCheckedError。
错误信息:
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value:'ng-valid: true'. Current value: 'ng-valid: false'.
Angular.json
中的配置:
"qa": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.qa.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"serviceWorker": true
},
构建脚本
node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod --configuration=qa
问题:
My question is How am I getting this error in production and how can I fix it?
已更新
I just noticed this line Angular is running in the development mode. Call enableProdMode() to enable the production mode.
问题:
所以我 运行 这个脚本用于构建我还需要做些什么来启用生产?
node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod --configuration=qa
Image of error in browser:
Image of environment
Main.ts
应包含以下内容:
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.log(err));
所以,有两件事需要为真。这需要存在于上方 main.ts
中,并且您的 environment.qa.ts
文件必须具有 production = true
。验证之后,在这里设置一个断点,以确保值是你认为的值。
补充思考
你没有问,但我还是要提供 - 你需要修复错误。 ExpressionChanged...
错误的存在表明您的应用程序逻辑存在问题 - 很可能是您在 lifecycle hooks(例如 AfterContentInit
)之一中操作变量。这不太可能产生明显的影响,但您可能会因此错误而遇到一些奇怪的错误。
版本详情
- Angular版本:7.3.7
我读到了这个错误,发现它无法进入生产环境,但我在生产环境中遇到了 ExpressionChangedAfterItHasBeenCheckedError。
错误信息:
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value:'ng-valid: true'. Current value: 'ng-valid: false'.
Angular.json
中的配置:
"qa": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.qa.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"serviceWorker": true
},
构建脚本
node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod --configuration=qa
问题:
My question is How am I getting this error in production and how can I fix it?
已更新
I just noticed this line
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
问题:
所以我 运行 这个脚本用于构建我还需要做些什么来启用生产?
node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod --configuration=qa
Image of error in browser:
Image of environment
Main.ts
应包含以下内容:
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.log(err));
所以,有两件事需要为真。这需要存在于上方 main.ts
中,并且您的 environment.qa.ts
文件必须具有 production = true
。验证之后,在这里设置一个断点,以确保值是你认为的值。
补充思考
你没有问,但我还是要提供 - 你需要修复错误。 ExpressionChanged...
错误的存在表明您的应用程序逻辑存在问题 - 很可能是您在 lifecycle hooks(例如 AfterContentInit
)之一中操作变量。这不太可能产生明显的影响,但您可能会因此错误而遇到一些奇怪的错误。