Yesterday I upgraded my project to Angular v9. I'm getting the below error when running ng build
.
Generating ES5 bundles for differential loading... An unhandled exception occurred: C:\workspace\project\ui\pages-pages-module-es2015.js: Property left of ForInStatement expected node to be of a type ["VariableDeclaration","LVal"] but instead got null See "C:\Users\sayoo\AppData\Local\Temp\ng-BaceZi\angular-errors.log" for further details.
Please find below the files : package.json
{
"name": "ui",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"start:ar": "ng serve --configuration=ar-IQ",
"build": "ng build",
"build:ar": "ng build --configuration=ar-IQ",
"test": "ng test",
"test:coverage": "ng test --code-coverage",
"lint": "ng lint",
"e2e": "ng e2e",
"int-extract": "ng xi18n --output-path src/locale",
"postinstall": "ngcc"
},
"private": true,
"dependencies": {
"@agm/core": "^1.0.0-beta.7",
"@angular/animations": "^9.0.5",
"@angular/common": "~9.0.5",
"@angular/compiler": "~9.0.5",
"@angular/core": "~9.0.5",
"@angular/forms": "~9.0.5",
"@angular/localize": "~9.0.5",
"@angular/platform-browser": "~9.0.5",
"@angular/platform-browser-dynamic": "~9.0.5",
"@angular/router": "~9.0.5",
"@fullcalendar/angular": "^4.2.1",
"@fullcalendar/bootstrap": "^4.2.0",
"@fullcalendar/core": "^4.2.0",
"@fullcalendar/daygrid": "^4.2.0",
"@fullcalendar/interaction": "^4.2.0",
"@fullcalendar/timegrid": "^4.2.0",
"@iplab/ngx-file-upload": "^1.4.0",
"@ng-bootstrap/ng-bootstrap": "^5.1.0",
"@ng-select/ng-select": "^3.0.3",
"angular-archwizard": "^4.0.0",
"animate.css": "^3.7.2",
"apexcharts": "^3.8.3",
"bootstrap": "^4.3.1",
"chart.js": "^2.8.0",
"chartist": "^0.11.3",
"core-js": "^2.5.4",
"karma-viewport": "^1.0.5",
"metismenujs": "^1.0.3",
"ng-apexcharts": "^1.0.5",
"ng-click-outside": "^4.0.0",
"ng2-charts": "^2.3.0",
"ng2-search-filter": "^0.5.1",
"ng5-slider": "^1.2.4",
"ngx-bootstrap": "^5.1.0",
"ngx-chartist": "^1.0.3",
"ngx-color-picker": "^8.1.0",
"ngx-drag-drop": "^2.0.0",
"ngx-editor": "^4.1.0",
"ngx-image-cropper": "^1.4.1",
"ngx-lightbox": "^2.0.1",
"ngx-mask": "^8.0.3",
"ngx-ui-switch": "^8.1.0",
"rxjs": "^6.5.2",
"smooth-scrollbar": "^8.3.1",
"sweetalert2": "^8.16.3",
"tslib": "^1.10.0",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.900.5",
"@angular/cli": "~9.0.5",
"@angular/compiler-cli": "~9.0.5",
"@angular/language-service": "~9.0.5",
"@types/node": "^12.11.1",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"codelyzer": "^5.1.2",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",
"typescript": "~3.7.5"
}
}
tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "esnext",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
}
}
angular.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"ui": {
"i18n": {
"locales": {
"ar-IQ": {
"translation": "src/locale/messages.ar.xlf",
"baseHref": ""
}
}
},
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/ui",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"aot": true,
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/assets/scss/bootstrap.scss",
"src/assets/scss/app.scss",
"src/assets/scss/icons.scss"
],
"scripts": [],
"es5BrowserSupport": true
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
}
]
},
"ar-IQ": {
"outputPath": "dist/ui-ar-iq/",
"i18nFile": "src/locale/messages.ar.xlf",
"i18nLocale": "ar-IQ",
"i18nMissingTranslation": "error"
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "ui:build",
"port": 4200,
"host": "falcon.me",
"disableHostCheck": true
},
"configurations": {
"production": {
"browserTarget": "ui:build:production"
},
"ar-IQ": {
"browserTarget": "ui:build:ar-IQ"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "ui:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/assets/scss/bootstrap.scss",
"src/assets/scss/app.scss",
"src/assets/scss/icons.scss"
],
"scripts": []
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"tsconfig.app.json",
"tsconfig.spec.json",
"e2e/tsconfig.json"
],
"exclude": [
"**/node_modules/**"
]
}
},
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "ui:serve"
},
"configurations": {
"production": {
"devServerTarget": "ui:serve:production"
}
}
}
}
}},
"defaultProject": "ui"
}
pages.routing.module
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{ path: '', redirectTo: '/apps/obstacles', pathMatch: 'full' },
{ path: 'apps', loadChildren: () => import('./apps/apps.module').then(m => m.AppsModule) }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class PagesRoutingModule { }
Found the solution for the above issue. steps to fix
npm outdated
.Temporary solution: There was a change in @angular-devkit/build-angular which updated the differential loading. To fix this in your Angular project, change the target value from “es2015” to “es5” in your tsconfig.json:
{ "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, "module": "esnext", "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "importHelpers": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2018", "dom" ] } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With