Vscode-ng-language-service: monorepo / multi-projectconfigでngccがクラッシュする-IvyNative LS

作成日 2020年12月18日  ·  5コメント  ·  ソース: angular/vscode-ng-language-service

バグを説明する

VSCode拡張機能は、複数のtsconfigを持つリポジトリでクラッシュします。

すべてのtsconfigの横にあるnode_modulesフォルダーをngccしようとしているようです。

再現するには

  1. このようなリポジトリで拡張機能を有効にしますhttps://github.com/jscutlery/convoyr
  2. app.component.ts開きます

予想される行動

クラッシュしないはずです。

ログ

[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

最も参考になるコメント

@yjaaidiここでの問題は十分です-角度/角度で開く必要はありません! 2つのリポジトリ間で言語サービスレポートを統合する方法/かどうかはまだ決定していないため、現時点では両方に注目しています。

キーンと私は昨日これでペアになり、リンクされたリポジトリを使用して4つの別々の問題の根本原因を突き止めることができました。 修正をマージして、1月の次のリリースに備える必要があります。 報告ありがとうございます!

全てのコメント5件

リポジトリへのリンクをありがとう、それは非常に役に立ちます。

node_modulesがあるディレクトリとは対照的に、ngccはcwdがtsconfig.jsonのディレクトリに手動で設定されている場合を処理しないようです。

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

convoyr/apps/sandboxからngccを実行すると、投稿したのと同じ失敗が見られました。
ルートディレクトリから実行すると、ngccは正常に機能します。

また、ngccが失敗した場合、言語サービスを永続的に無効にしないでください。 これを追跡するために#1041を作成しました。

お力になれて、嬉しいです!

github.com/angular/angularで問題を開く必要がありますか?

@yjaaidiここでの問題は十分です-角度/角度で開く必要はありません! 2つのリポジトリ間で言語サービスレポートを統合する方法/かどうかはまだ決定していないため、現時点では両方に注目しています。

キーンと私は昨日これでペアになり、リンクされたリポジトリを使用して4つの別々の問題の根本原因を突き止めることができました。 修正をマージして、1月の次のリリースに備える必要があります。 報告ありがとうございます!

早かった。 よくやった!
手伝ってもらえたら教えてください。

この問題は、非アクティブのために自動的にロックされています。
同様の問題または関連する問題が発生した場合は、新しい問題を提出してください。

自動会話ロックポリシーの詳細をご覧ください。

_このアクションはボットによって自動的に実行されました。_

このページは役に立ちましたか?
0 / 5 - 0 評価