2

My node version is 16.13.0 and I'm using angular 14
The following is my package.json

{
  "name": "my-project",
  "version": "01.06.05",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "node ./replace.build.js && ng serve --open",
    "build": "ng lint && node ./replace.build.js && ng build --configuration=production --build-optimizer --optimization --extract-licenses=false",
    "publish": "npm run build",
    "test": "ng test",
    "lint": "ng lint"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^14.2.0",
    "@angular/cdk": "^14.2.0",
    "@angular/common": "^14.2.0",
    "@angular/core": "^14.2.0",
    "@angular/forms": "^14.2.0",
    "@angular/material": "^14.2.0",
    "@angular/platform-browser": "^14.2.0",
    "@angular/platform-browser-dynamic": "^14.2.0",
    "@angular/router": "^14.2.0",
    "@angular/service-worker": "^14.2.0",
    "bootstrap": "^5.2.0",
    "highcharts": "^10.2.1",
    "hover.css": "^2.3.2",
    "lodash-es": "^4.17.21",
    "material-design-icons": "^3.0.1",
    "mds.persian.datetime": "^1.5.0",
    "mermaid": "^9.1.6",
    "ngx-markdown": "^14.0.1",
    "rxjs": "^7.5.6",
    "three": "^0.144.0",
    "tslib": "^2.4.0",
    "zone.js": "^0.11.8"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^14.2.1",
    "@angular-eslint/builder": "14.0.3",
    "@angular-eslint/eslint-plugin": "14.0.3",
    "@angular-eslint/eslint-plugin-template": "14.0.3",
    "@angular-eslint/schematics": "14.0.3",
    "@angular-eslint/template-parser": "14.0.3",
    "@angular/cli": "^14.2.1",
    "@angular/compiler": "^14.2.0",
    "@angular/compiler-cli": "^14.2.0",
    "@angular/language-service": "^14.2.0",
    "@angular/localize": "^14.2.0",
    "@types/bootstrap": "^5.2.3",
    "@types/jasmine": "^4.3.0",
    "@types/jasminewd2": "^2.0.10",
    "@types/lodash-es": "^4.17.6",
    "@types/mermaid": "^8.2.9",
    "@types/node": "^18.7.14",
    "@types/recordrtc": "^5.6.8",
    "@types/three": "^0.144.0",
    "@typescript-eslint/eslint-plugin": "5.36.1",
    "@typescript-eslint/parser": "5.36.1",
    "eslint": "^8.23.0",
    "eslint-config-airbnb-base": "^15.0.0",
    "eslint-plugin-import": "^2.26.0",
    "jasmine-core": "^4.4.0",
    "karma": "^6.4.0",
    "karma-chrome-launcher": "^3.1.1",
    "karma-cli": "^2.0.0",
    "karma-coverage": "^2.2.0",
    "karma-jasmine": "^5.1.0",
    "karma-jasmine-html-reporter": "^2.0.0",
    "lodash-extend": "^1.0.13",
    "protractor": "^7.0.0",
    "replace-in-file": "^6.3.5",
    "ts-node": "^10.9.1",
    "tslint": "^6.1.3",
    "typescript": "~4.8.2"
  }
}

I have the following eslint config:

{
  "root": true,
  "ignorePatterns": [
    "projects/**/*"
  ],
  "overrides": [
    {
      "files": [
        "*.ts",
        "*.js",
        "*.tsx"
      ],
      "parserOptions": {
        "project": [
          "tsconfig.json"
        ],
        "createDefaultProgram": true
      },
      "extends": [
        "plugin:@angular-eslint/recommended",
        "plugin:@angular-eslint/template/process-inline-templates"
      ],
      "rules": {
        "@angular-eslint/directive-selector": [
          "error",
          {
            "type": "attribute",
            "prefix": "app",
            "style": "camelCase"
          }
        ],
        "@angular-eslint/component-selector": [
          "error",
          {
            "type": "element",
            "prefix": "app",
            "style": "kebab-case"
          }
        ],
        "indent": [
          "error",
          2,
          {
            "SwitchCase": 1
          }
        ],
        "@angular-eslint/template/eqeqeq": "off",
        "@typescript-eslint/naming-convention": "error",
        "@typescript-eslint/explicit-function-return-type": "error",
        "quotes": "error",
        "semi": "error",
        "no-multiple-empty-lines": "error",
        "comma-dangle": "error"
      }
    },
    {
      "files": [
        "*.html",
        "*.css"
      ],
      "extends": [
        "plugin:@angular-eslint/template/recommended"
      ],
      "rules": {
        "@angular-eslint/template/eqeqeq": "off",
        "@angular-eslint/template/accessibility-elements-content": "error",
        "no-multiple-empty-lines": "error"
      }
    }
  ]
}

And the following is angular.json:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "cli": {
    "analytics": false,
    "schematicCollections": [
      "@angular-eslint/schematics"
    ]
  },
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "my-project": {
      "projectType": "application",
      "schematics": {
        "@schematics/angular:component": {
          "skipTests": true
        },
        "@schematics/angular:application": {
          "strict": true
        }
      },
      "root": "",
      "sourceRoot": "src",
      "prefix": "app",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist",
            "index": "./src/index.html",
            "main": "./src/main.ts",
            "polyfills": "./src/polyfills.ts",
            "tsConfig": "./tsconfig.json",
            "assets": [
              "./src/assets",
              "./src/favicon.ico",
              "./src/manifest.json"
            ],
            "styles": [
              "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css",
              "./node_modules/material-design-icons/iconfont/material-icons.css",
              "./node_modules/bootstrap/dist/css/bootstrap.min.css",
              "./src/bootstrap-custom.css",
              "./node_modules/hover.css/css/hover-min.css",
              "./src/materials-custom.css",
              "./src/styles.css",
              "./src/rtl.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "./src/environments/environment.ts",
                  "with": "./src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "namedChunks": false,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "budgets": [
                {
                  "type": "initial",
                  "maximumWarning": "2mb",
                  "maximumError": "5mb"
                },
                {
                  "type": "anyComponentStyle",
                  "maximumWarning": "6kb",
                  "maximumError": "10kb"
                }
              ],
              "serviceWorker": true,
              "ngswConfigPath": "ngsw-config.json"
            },
            "development": {
              "buildOptimizer": false,
              "optimization": false,
              "vendorChunk": true,
              "extractLicenses": false,
              "sourceMap": true,
              "namedChunks": true
            }
          },
          "defaultConfiguration": "production"
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "my-project:build",
            "proxyConfig": "./proxy.config.js"
          },
          "configurations": {
            "production": {
              "browserTarget": "my-project:build:production"
            },
            "development": {
              "browserTarget": "my-project:build:development"
            }
          },
          "defaultConfiguration": "development"
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "my-project: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",
            "scripts": [],
            "styles": [
              "./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css",
              "./node_modules/material-design-icons/iconfont/material-icons.css",
              "./node_modules/bootstrap/dist/css/bootstrap.min.css",
              "./src/bootstrap-custom.css",
              "./node_modules/hover.css/css/hover-min.css",
              "./src/materials-custom.css",
              "./src/styles.css",
              "./src/rtl.css"
            ],
            "assets": [
              "./src/assets",
              "./src/favicon.ico",
              "./src/manifest.json"
            ]
          }
        },
        "lint": {
          "builder": "@angular-eslint/builder:lint",
          "options": {
            "lintFilePatterns": [
              "src/**/*.ts",
              "src/**/*.html"
            ]
          }
        }
      }
    }
  }
}

when I use ng lint command the following error raised:

node:internal/process/promises:246
          triggerUncaughtException(err, true /* fromPromise */);
          ^

[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "#<Object>".] {
  code: 'ERR_UNHANDLED_REJECTION'
}

I test uninstalling some packages, no changes!
How can I detect the problem? How can I detect the problem!

Mohammad Dayyan
  • 21,578
  • 41
  • 164
  • 232
  • Does this answer your question? [Eslint not ignoring node\_modules folder](https://stackoverflow.com/questions/60192096/eslint-not-ignoring-node-modules-folder) – Naren Murali Sep 05 '22 at 04:12
  • No, I added `lint` block to `angular.json` to process `"src/**/*.ts"` files, I'll add angular.json to question – Mohammad Dayyan Sep 05 '22 at 06:04

1 Answers1

6

Had same issue. In my case there was trailing comma in tsconfig.json. How to get error stacktrace:

  1. Use node v16.15+
  2. Run ng lint again to see full stack trace, to see error

In my case it was property missing error, because of unnecessary comma after last option in compilerOptions and config reader thought that after comma should be another property with value.

Arty
  • 76
  • 1
  • the error was result of `ng lint` with node 6.13, I update my node to 16.17, unbelievably `ng lint` report the problem with new node, I removed the problem and now everything is OK, after 1 week :)) – Mohammad Dayyan Sep 07 '22 at 10:12