Angular 9 build Generating ES5 bundles for differential loading... An unhandled exception occurred :

Viewed 33415

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 { }
3 Answers

Found the solution for the above issue. steps to fix

  1. run npm outdated.
  2. from the list of packages update the packages in red color to correct version.

enter image description here

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"
        ]
      }
    }

I was facing the same problem and resolved by removing a package that uses svg.js@2.7.1 !!! From what you discover, this error is caused by the discontinued version of svg.js@2.7.1 !!! Look inside your application that there is a package using this and remove it!

(NOTE: Sorry for possible errors in my writing, I'm Brazilian, I'm having to use Google translator to write this)

Related