Vscode-ng-language-service: ES2015 in 0.1000.4 breaks language service

Created on 16 Jul 2020  路  15Comments  路  Source: angular/vscode-ng-language-service

Issue Type: Bug

the ctrl + click functionality (show function definition) is not working after latest update.

local angular version - 8.23
global angular version - 10.3

Extension version: 0.1000.4
VS Code version: Code - Insiders 1.48.0-insider (cb31fc6ce2b4da3520392b622aa3ebc5b313533b, 2020-07-15T05:34:49.078Z)
OS version: Windows_NT x64 10.0.18363


System Info

|Item|Value|
|---|---|
|CPUs|Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz (8 x 1800)|
|GPU Status|2d_canvas: enabled
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
multiple_raster_threads: enabled_on
oop_rasterization: disabled_off
opengl: enabled_on
protected_video_decode: enabled
rasterization: enabled
skia_renderer: disabled_off_ok
video_decode: enabled
viz_display_compositor: enabled_on
webgl: enabled
webgl2: enabled|
|Load (avg)|undefined|
|Memory (System)|15.87GB (5.27GB free)|
|Process Argv||
|Screen Reader|no|
|VM|0%|


bug extension

All 15 comments

Same issue

Can you please provide some more information? What language service version are you using, what is a minimal reproduction of your issue?

Same for me.

Version: v0.1000.4
Language service: "@angular/language-service": "~9.1.9"

Creating a .ts component, create a simple function, then use that function on HTML button, the "Go to definition" options says:
No definition found for 'functionName'

i鈥檒l take a look at this after work (eta 9 hours)

Same issue, but only on large projects (200+ files). If I start a new angular project it seems to work.

I was able to reproduce this only in projects below Angular 10, but using 0.10x of the language service extensions.

Steps:

  • create a new Angular 9 or lower app (ng new ...)
  • create a new component, and a template for that component
  • HTML->TS go to definition stops working until the language service is reloaded

I'm not sure what could have caused this regression, looking at the recent commits we have made in the extension and language service package. But it's probably a bug in the extension.

Unfortunately I don't have the time to work on this like I thought I did.

For now a workaround is to restart the language service, at least for the issue I was able to repro. It's very possible that there are multiple conflating issues here.

I believe I have the same issue, just for anyone's reference, let me post some info:

[Info  - 11:18:13 AM] Angular language server process ID: 5283
[Info  - 11:18:13 AM] Using typescript v3.9.5 from /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/node_modules/typescript/lib/tsserverlibrary.js
[Info  - 11:18:13 AM] Using @angular/language-service v10.0.4 from /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/server/node_modules/@angular/language-service/bundles/language-service.umd.js
[Info  - 11:18:13 AM] Log file: /Users/patrick/Library/Application Support/Code/logs/20200720T111803/exthost1/Angular.ng-template/nglangsvc.log
[Info  - 11:18:26 AM] Enabling language service for /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json.
[Error - 11:18:26 AM] No config file for /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.html

Here is the nglangsvg.log file. It's a big project, with several apps and many libs, maintained in Nx Workspace. I scrubbed some file names since this code is not public.

Info 0    [11:18:13.190] Format host information updated
Info 1    [11:18:13.190] reload projects.
Info 2    [11:18:13.190] Before ensureProjectForOpenFiles:
Info 3    [11:18:13.191] After ensureProjectForOpenFiles:
Info 4    [11:18:13.191] Host file extension mappings updated
Info 5    [11:18:14.99] Search path: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app
Info 6    [11:18:14.100] For info: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.html :: Config file name: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 7    [11:18:14.100] Opened configuration file /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 8    [11:18:14.197] Config: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json : {
 "rootNames": [
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/main.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/polyfills.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/test-setup.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app-routing.module.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.spec.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.module.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/core/auth.service.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/error/error.component.spec.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/error/error.component.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/general-setup/general-setup-routing.module.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/general-setup/general-setup.module.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/main/main.component.spec.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/main/main.component.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/shared/constants.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/shared/format-big-number.pipe.spec.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/shared/format-big-number.pipe.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/shared/shared.module.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/...( ~100 other files )",
 ],
 "options": {
  "rootDir": "/Users/patrick/dev/my-ng-project",
  "sourceMap": true,
  "declaration": false,
  "moduleResolution": 2,
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "importHelpers": true,
  "target": 2,
  "module": 99,
  "typeRoots": [
   "/Users/patrick/dev/my-ng-project/node_modules/@types",
   "/Users/patrick/dev/my-ng-project/typings"
  ],
  "lib": [
   "lib.es2017.d.ts",
   "lib.dom.d.ts"
  ],
  "skipLibCheck": true,
  "skipDefaultLibCheck": true,
  "noImplicitAny": false,
  "noImplicitThis": true,
  "alwaysStrict": true,
  "strictBindCallApply": true,
  "strictNullChecks": true,
  "strictFunctionTypes": true,
  "strictPropertyInitialization": true,
  "baseUrl": "/Users/patrick/dev/my-ng-project",
  "jsx": 2,
  "resolveJsonModule": true,
  "paths": {
   "@my-ng-project/angular/utils": [
    "libs/angular/utils/src/index.ts"
   ],
   "@my-ng-project/shared/types": [
    "libs/shared/types/src/index.ts"
   ],
   "@my-ng-project/shared/config": [
    "libs/shared/config/src/index.ts"
   ],
   "@my-ng-project/shared/utils": [
    "libs/shared/utils/src/index.ts"
   ],
   "@my-ng-project/shared/custom-json": [
    "libs/shared/custom-json/src/index.ts"
   ],
   "@my-ng-project/server/utils": [
    "libs/server/utils/src/index.ts"
   ],
   "@my-ng-project/server/fs-router": [
    "libs/server/fs-router/src/index.ts"
   ],
   "@my-ng-project/server/types": [
    "libs/server/types/src/index.ts"
   ],
   // ~20 other paths
  },
  "allowSyntheticDefaultImports": true,
  "esModuleInterop": true,
  "types": [
   "node",
   "jest"
  ],
  "configFilePath": "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json"
 }
}
Info 9    [11:18:14.199] Loading global plugin @angular/language-service
Info 10   [11:18:14.199] Enabling plugin @angular/language-service from candidate paths: /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/server/node_modules/@angular/language-service/bundles/language-service.umd.js,/Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/node_modules/typescript/lib/tsserverlibrary.js/../../..
Info 11   [11:18:14.199] Loading @angular/language-service from /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/server/node_modules/@angular/language-service/bundles/language-service.umd.js (resolved to /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/server/node_modules/@angular/language-service/bundles/language-service.umd.js/node_modules)
Info 12   [11:18:14.419] Plugin validation succeded
Info 13   [11:18:14.510] Starting updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Err 14    [11:18:25.36] Analyzing NgModules failed. TypeError: Found non-callable @@iterator
Info 15   [11:18:25.37] Finishing updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json Version: 1 structureChanged: true Elapsed: 10526ms
Info 16   [11:18:25.37] Project '/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json' (Configured)
Info 17   [11:18:25.37]     Files (1765)

Info 18   [11:18:25.37] -----------------------------------------------
Info 19   [11:18:25.51] Starting updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 20   [11:18:25.70] Finishing updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json Version: 2 structureChanged: false Elapsed: 19ms
Info 21   [11:18:25.77] Loading global plugin @angular/language-service
Info 22   [11:18:25.77] Enabling plugin @angular/language-service from candidate paths: /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/server/node_modules/@angular/language-service/bundles/language-service.umd.js,/Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/node_modules/typescript/lib/tsserverlibrary.js/../../..
Info 23   [11:18:25.77] Loading @angular/language-service from /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/server/node_modules/@angular/language-service/bundles/language-service.umd.js (resolved to /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.4/server/node_modules/@angular/language-service/bundles/language-service.umd.js/node_modules)
Info 24   [11:18:25.83] Plugin validation succeded
Info 25   [11:18:25.85] Starting updateGraphWorker: Project: /dev/null/inferredProject1*
Info 26   [11:18:26.521] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* Version: 1 structureChanged: true Elapsed: 1436ms
Info 27   [11:18:26.521] Project '/dev/null/inferredProject1*' (Inferred)
Info 28   [11:18:26.521]    Files (287)

Info 29   [11:18:26.521] -----------------------------------------------
Info 30   [11:18:26.525] Search path: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app
Info 31   [11:18:26.526] For info: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.ts :: Config file name: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 32   [11:18:26.728] Search path: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app
Info 33   [11:18:26.728] For info: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.html :: Config file name: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json

Angular version:

    "@angular-devkit/core": "^9.1.11",
    "@angular-devkit/schematics": "^9.1.11",
    "@angular/animations": "^9.1.12",
    "@angular/cdk": "^9.2.4",
    "@angular/common": "^9.1.12",
    "@angular/compiler": "^9.1.12",
    "@angular/core": "^9.1.12",
    "@angular/forms": "^9.1.12",
    "@angular/localize": "^9.1.12",
    "@angular/platform-browser": "^9.1.12",
    "@angular/platform-browser-dynamic": "^9.1.12",
    "@angular/router": "^9.1.12",

    "@angular-devkit/build-angular": "^0.901.11",
    "@angular/cli": "^9.1.11",
    "@angular/compiler-cli": "9.1.12",
    "@angular/language-service": "9.1.12",

I couldn't get it to work by restarting the language service, but If I switch to version 0.1000.3 in VS Code, then it starts working again.

Here are the logs from the working version:

[Info  - 11:32:48 AM] Angular language server process ID: 6576
[Info  - 11:32:48 AM] Using typescript v3.9.5 from /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.3/node_modules/typescript/lib/tsserverlibrary.js
[Info  - 11:32:48 AM] Using @angular/language-service v10.0.3 from /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.3/server/node_modules/@angular/language-service/bundles/language-service.umd.js
[Info  - 11:32:48 AM] Log file: /Users/patrick/Library/Application Support/Code/logs/20200720T111803/exthost1/Angular.ng-template/nglangsvc.log
[Info  - 11:32:56 AM] Enabling language service for /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json.
[Error - 11:32:56 AM] No config file for /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.html
Info 0    [11:32:48.189] Format host information updated
Info 1    [11:32:48.189] reload projects.
Info 2    [11:32:48.189] Before ensureProjectForOpenFiles:
Info 3    [11:32:48.189] After ensureProjectForOpenFiles:
Info 4    [11:32:48.189] Host file extension mappings updated
Info 5    [11:32:48.199] Search path: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app
Info 6    [11:32:48.200] For info: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.html :: Config file name: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 7    [11:32:48.200] Opened configuration file /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 8    [11:32:48.293] Config: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json : {
 "rootNames": [
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/main.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/polyfills.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/test-setup.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app-routing.module.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.spec.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.ts",
  "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.module.ts",
  "...continued..."
 ],
 "options": {
  "rootDir": "/Users/patrick/dev/my-ng-project",
  "sourceMap": true,
  "declaration": false,
  "moduleResolution": 2,
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "importHelpers": true,
  "target": 2,
  "module": 99,
  "typeRoots": [
   "/Users/patrick/dev/my-ng-project/node_modules/@types",
   "/Users/patrick/dev/my-ng-project/typings"
  ],
  "lib": [
   "lib.es2017.d.ts",
   "lib.dom.d.ts"
  ],
  "skipLibCheck": true,
  "skipDefaultLibCheck": true,
  "noImplicitAny": false,
  "noImplicitThis": true,
  "alwaysStrict": true,
  "strictBindCallApply": true,
  "strictNullChecks": true,
  "strictFunctionTypes": true,
  "strictPropertyInitialization": true,
  "baseUrl": "/Users/patrick/dev/my-ng-project",
  "jsx": 2,
  "resolveJsonModule": true,
  "paths": {
   "@my-ng-project/angular/utils": [
    "libs/angular/utils/src/index.ts"
   ],
   "@my-ng-project/shared/types": [
    "libs/shared/types/src/index.ts"
   ],
   "@my-ng-project/shared/config": [
    "libs/shared/config/src/index.ts"
   ],
   "...continued...": []
  },
  "allowSyntheticDefaultImports": true,
  "esModuleInterop": true,
  "types": [
   "node",
   "jest"
  ],
  "configFilePath": "/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json"
 }
}
Info 9    [11:32:48.294] Loading global plugin @angular/language-service
Info 10   [11:32:48.294] Enabling plugin @angular/language-service from candidate paths: /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.3/server/node_modules/@angular/language-service/bundles/language-service.umd.js,/Users/patrick/.vscode/extensions/angular.ng-template-0.1000.3/node_modules/typescript/lib/tsserverlibrary.js/../../..
Info 11   [11:32:48.294] Loading @angular/language-service from /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.3/server/node_modules/@angular/language-service/bundles/language-service.umd.js (resolved to /Users/patrick/.vscode/extensions/angular.ng-template-0.1000.3/server/node_modules/@angular/language-service/bundles/language-service.umd.js/node_modules)
Info 12   [11:32:48.415] Plugin validation succeded
Info 13   [11:32:48.462] Starting updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 14   [11:32:56.352] Finishing updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json Version: 1 structureChanged: true Elapsed: 7890ms
Info 15   [11:32:56.352] Project '/Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json' (Configured)
Info 16   [11:32:56.352]    Files (1765)

Info 17   [11:32:56.352] -----------------------------------------------
Info 18   [11:32:56.359] Starting updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json
Info 19   [11:32:56.369] Finishing updateGraphWorker: Project: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json Version: 2 structureChanged: false Elapsed: 10ms
Info 20   [11:33:9.344] Search path: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app
Info 21   [11:33:9.344] For info: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/src/app/app.component.ts :: Config file name: /Users/patrick/dev/my-ng-project/apps/desktop-app-renderer/tsconfig.json

I notice in the non-working version 0.1000.4, there is an extra line TypeError: Found non-callable @@iterator. Maybe this is related? By the way, we are planning to update this project to Angular v10 later this week, so it might go away at that time.

I was able to reproduce this only in projects below Angular 10, but using 0.10x of the language service extensions.

Steps:

  • create a new Angular 9 or lower app (ng new ...)
  • create a new component, and a template for that component
  • HTML->TS go to definition stops working until the language service is reloaded

I tried this but was unable to reproduce the issue. Here's my ng version

Angular CLI: 9.1.12
Node: 12.18.1
OS: linux x64

Angular: 9.1.12
... animations, cli, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Ivy Workspace: Yes

The extension version that I tested was v0.1000.4.
I tried to make a new app, run ng generate component, and navigated to the external template.
Go to definition and hover tooltip both worked fine.

If someone could please share a repository where this happens it'd be immensely helpful.

Hi @kyliau, even after upgrading our internal repo to Angular 10, I still got the same issue. I tried to debug the language service code on my main repository, it seems @angular/language-service gets the error Found non-callable @@iterator around the line:

staticSymbolResolver.getSymbolsOf(fileName).forEach((symbol) => {

inside function analyzeFile().

Here is the full stack trace:

TypeError: Found non-callable @@iterator
    at c:\Users\pm\Desktop\vscode-ng-language-service\server\node_modules\@angular\language-service\bundles\language-service.js:20207:36
    at Array.forEach (<anonymous>)
    at StaticReflector.propMetadata (c:\Users\pm\Desktop\vscode-ng-language-service\server\node_modules\@angular\language-service\bundles\language-service.js:20201:38)
    at DirectiveResolver.resolve (c:\Users\pm\Desktop\vscode-ng-language-service\server\node_modules\@angular\language-service\bundles\language-service.js:17871:62)
    at CompileMetadataResolver.isAbstractDirective (c:\Users\pm\Desktop\vscode-ng-language-service\server\node_modules\@angular\language-service\bundles\language-service.js:18526:50)
    at c:\Users\pm\Desktop\vscode-ng-language-service\server\node_modules\@angular\language-service\bundles\language-service.js:18673:34
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver.getNgModuleMetadata (c:\Users\pm\Desktop\vscode-ng-language-service\server\node_modules\@angular\language-service\bundles\language-service.js:18666:58)
    at c:\Users\pm\Desktop\vscode-ng-language-service\server\node_modules\@angular\language-service\bundles\language-service.js:19914:59
    at Array.forEach (<anonymous>)

This error occurred when the file name was node_modules/@aloreljs/ngx-auto-id/ngx-auto-id.d.ts, so maybe it is related to that module...?

I created a new minimal application here: https://github.com/patrick-entinux/language-service-bug
With just ngx-auto-id installed and one component added.

When I use language service v0.1000.4, I get the same failure. When I use language service v0.1000.3, it works just fine. Maybe this helps?

I'm going to try removing ngx-auto-id from our internal project and see if that fixes the issue on on internal repo too.

EDIT: After I did a quick npm uninstall @aloreljs/ngx-auto-id in an internal repo with this error, it started working with v0.1000.4 language service again. (Of course, the application was depending on the features of that module so it would not build now...)`

@patrick-entinux Which version of vscode are you using?
We upgraded the bundle format from ES5 to ES2015 in v0.1000.4.
Based on the stack trace, it looks like there's an incompatibility in Node version.

That said, do you happen to have a local copy of @angular/language-service?
You seem to be using @angular/language-service >= v10.0.5, which has not been released with the extension.
(This is because language-service.umd.js is renamed to language-service.js in v10.0.5)

@kyliau , i'm able to reproduce by adding toString method to component:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'demo-app';

  toString(): string{
    return '';
  }  
}
[Info  - 21:24:46] Angular language server process ID: 26464
[Info  - 21:24:46] Using typescript v3.9.5 from c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\node_modules\typescript\lib\tsserverlibrary.js
[Info  - 21:24:46] Using @angular/language-service v10.0.4 from c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js
[Info  - 21:24:46] Log file: c:\Users\Andrius\AppData\Roaming\Code\logs\20200729T212443\exthost1\Angular.ng-template\nglangsvc.log
[Info  - 21:24:49] Disabling language service for d:/demo/language-service-bug/tsconfig.json because it is not an Angular project ('@angular/core/core.d.ts' could not be found). If you believe you are seeing this message in error, please reinstall the packages in your package.json.
[Info  - 21:24:49] Enabling language service for d:/demo/language-service-bug/tsconfig.app.json.
[Info  - 21:24:49] Enabling language service for d:/demo/language-service-bug/tsconfig.spec.json.
[Error - 21:24:49] No config file for d:\demo\language-service-bug\src\app\app.component.html
c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:20231
                        decorators.push(...propMetadata[propName]);
                                   ^

TypeError: Found non-callable @@iterator
    at c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:20231:36
    at Array.forEach (<anonymous>)
    at StaticReflector.propMetadata (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:20225:38)
    at DirectiveResolver.resolve (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:17908:62)
    at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:18443:53)
    at visit (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:40449:48)
    at visitNodes (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\node_modules\typescript\lib\tsserverlibrary.js:18953:30)
    at Object.forEachChild (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\node_modules\typescript\lib\tsserverlibrary.js:19186:24)
    at TypeScriptServiceHost.getDeclarations (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:40464:17)
    at LanguageServiceImpl.getSemanticDiagnostics (c:\Users\Andrius\.vscode\extensions\angular.ng-template-0.1000.4\server\node_modules\@angular\language-service\bundles\language-service.umd.js:25565:44)
[Info  - 21:25:04] Connection to server got closed. Server will restart.

ng version:

Angular CLI: 10.0.4
Node: 12.18.0
OS: win32 x64

Angular: 10.0.5
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Ivy Workspace: Yes

@patrick-entinux and @andrius-pra thank you for the excellent reproduction!

Here's a summary of the bug:

in v0.1000.4 the bundle format was upgraded from es5 to es2015.
Unfortunately, es2015 mode sort of uncovered a bug in the compiler.

If the propName toString (or any other methods that are available on Object.prototype) is present in metadata.json, previous compiled code was:

if (propMetadata[propName]) {
    decorators.push.apply(decorators, __spread(propMetadata[propName]));
}

but in es2015 it becomes

if (propMetadata[propName]) {
    decorators.push(...propMetadata[propName]);
}

It used worked in es5 because the polyfill for the spread operator is

    function __spread() {
        for (var ar = [], i = 0; i < arguments.length; i++)
            ar = ar.concat(__read(arguments[i]));
        return ar;
    }

whereas in es2015 it鈥檒l fail since the iterable symbol is not present in propMetadata['toString'] which evaluates to a function.

@kyliau

@patrick-entinux Which version of vscode are you using?
We upgraded the bundle format from ES5 to ES2015 in v0.1000.4.
Based on the stack trace, it looks like there's an incompatibility in Node version.

Sorry for the confusing information, I was just using the stable version of VS Code, right now it is 1.47.3, so it was probably the same a couple days ago.

That said, do you happen to have a local copy of @angular/language-service?
You seem to be using @angular/language-service >= v10.0.5, which has not been released with the extension.
(This is because language-service.umd.js is renamed to language-service.js in v10.0.5)

Oh, sorry for this confusion too, I don't know anything about debugging VS Code extensions, I couldn't figure out how to debug the installed v0.1000.4 extension, so I cloned the latest commit from https://github.com/angular/vscode-ng-language-service and followed the developer instructions to attach the debugger. I did not think about how it's a slightly different version. 馃槗 Glad you could track down the issue, thank you and looking forward to the updated version. 馃檱

This is fixed in v0.1000.7 that was just released. Sorry for the delay and thank you @patrick-entinux and @andrius-pra for your help in reproducing the bug!

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

_This action has been performed automatically by a bot._

Was this page helpful?
0 / 5 - 0 ratings