Vscode-ng-language-service: Bloqueo de ngcc con configuración de monorepo / multiproyecto - Ivy Native LS

Creado en 18 dic. 2020  ·  5Comentarios  ·  Fuente: angular/vscode-ng-language-service

Describe el error

La extensión VSCode se bloquea en repositorios con varios tsconfigs.

Parece intentar ngcc la carpeta node_modules junto a cada tsconfig.

Reproducir

  1. Habilite la extensión en un repositorio como este https://github.com/jscutlery/convoyr
  2. Abra el app.component.ts

Comportamiento esperado

No debería chocar.

Registros

[Info  - 8:18:20 PM] Angular language server process ID: 91911
[Info  - 8:18:20 PM] Using typescript/lib/tsserverlibrary v4.0.5 from /.vscode/extensions/angular.ng-template-0.1101.0-next.1/node_modules/typescript/lib/tsserverlibrary.js
[Info  - 8:18:20 PM] Using @angular/language-service/bundles/ivy v11.1.0-next.3 from /.vscode/extensions/angular.ng-template-0.1101.0-next.1/node_modules/@angular/language-service/bundles/ivy.js
[Info  - 8:18:20 PM] Log file: /Library/Application Support/Code/logs/20201218T201630/exthost3/Angular.ng-template/nglangsvc.log
[Error - 8:18:25 PM] Cannot read file '/dev/jscutlery/convoyr/dev/jscutlery/convoyr/tsconfig.json'.
No inputs were found in config file '/dev/jscutlery/convoyr/dev/jscutlery/convoyr/apps/sandbox/tsconfig.json'. Specified 'include' paths were '["**/*.ts"]' and 'exclude' paths were '[]'.
Error: ENOENT: no such file or directory, scandir '/dev/jscutlery/convoyr/apps/sandbox/node_modules'
    at Object.readdirSync (fs.js:854:3)
    at Object.fs.readdirSync (electron/js2c/asar.js:621:39)
    at NodeJSFileSystem.readdir (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/src/ngtsc/file_system/src/node_js_file_system.js:53:23)
    at EntryPointCollector.walkDirectoryForPackages (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/entry_point_collector.js:63:56)
    at /dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js:62:100
    at Object.trackDuration (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/utils.js:93:22)
    at DirectoryWalkerEntryPointFinder.walkBasePathForPackages (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js:62:39)
    at DirectoryWalkerEntryPointFinder.findEntryPoints (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js:40:30)
    at /dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/execution/analyze_entry_points.js:28:41
    at new ClusterMaster (/dev/jscutlery/convoyr/node_modules/@angular/compiler-cli/ngcc/src/execution/cluster/master.js:45:30)
[Error - 8:18:26 PM] Failed to run ngcc for /dev/jscutlery/convoyr/apps/sandbox/tsconfig.json:
    ngcc for /dev/jscutlery/convoyr/apps/sandbox/tsconfig.json returned exit code 1, stderr: 
    Language service will remain disabled.
bug

Comentario más útil

@yjaaidi El problema aquí es suficiente: ¡no es necesario abrir uno en angular / angular! Aún no hemos decidido cómo / si queremos consolidar los informes de servicios de idiomas entre los dos repositorios, así que por ahora solo estamos atentos a ambos.

Keen y yo nos emparejamos en esto ayer y pudimos rastrear la causa raíz de 4 problemas separados utilizando el repositorio vinculado. Deberíamos haber fusionado las correcciones y estar listas para el próximo lanzamiento en enero. ¡Gracias por el informe!

Todos 5 comentarios

Gracias por el enlace al repositorio, es muy útil.

Parece que ngcc no maneja el caso en el que cwd se establece manualmente en el directorio de tsconfig.json , a diferencia del directorio donde se encuentra node_modules .

https://github.com/angular/vscode-ng-language-service/blob/132b2051c44de5504bc77776430c066ecc5fa88a/server/src/ngcc.ts#L36 -L44

Cuando ejecuto ngcc desde convoyr/apps/sandbox , vi el mismo error que publicaste.
Cuando se ejecuta desde el directorio raíz, ngcc funciona bien.

Además, no deberíamos deshabilitar el servicio de idioma de forma permanente si ngcc falla. Creé el # 1041 para rastrear esto.

¡Feliz de ayudar!

¿Deberíamos abrir un problema en github.com/angular/angular?

@yjaaidi El problema aquí es suficiente: ¡no es necesario abrir uno en angular / angular! Aún no hemos decidido cómo / si queremos consolidar los informes de servicios de idiomas entre los dos repositorios, así que por ahora solo estamos atentos a ambos.

Keen y yo nos emparejamos en esto ayer y pudimos rastrear la causa raíz de 4 problemas separados utilizando el repositorio vinculado. Deberíamos haber fusionado las correcciones y estar listas para el próximo lanzamiento en enero. ¡Gracias por el informe!

Eso fue rápido. ¡Gran trabajo!
Hágame saber si puedo ayudar.

Este problema se ha bloqueado automáticamente debido a la inactividad.
Por favor, presente un nuevo problema si se encuentra con un problema similar o relacionado.

Obtenga más información sobre nuestra política de bloqueo automático de conversaciones .

_Esta acción ha sido realizada automáticamente por un bot._

¿Fue útil esta página
0 / 5 - 0 calificaciones