はしがき
重要度が高い module を install した commit を push しましたが、github action 上で build する時エラーが表示されました。
/home/runner/work/mj_client/mj_client/node_modules/vue-tsc/bin/vue-tsc.js:68
throw err;
^
Search string not found: "for (const existingRoot of buildInfoVersionMap.roots) {"
(Use node --trace-uncaught ... to show where the exception was thrown)
vue-tsc っぽい問題、typescript は最近導入して、あちこち使っているし、重要度が高い module も諦められないので、あれこれ試してみました。
目標
重要度が高い module を install している状態です。
- local から build する時、エラーが表示されないこと
- github action から build する時、エラーが表示されないこと
試してみること
- vue-tsc upgrade
- nuxt upgrade
- dependencies の version を固定すること(yarn の resolutions)
- yarn.lock node_module 削除/インストール
project module version
// package.json
// だいぶ省略しました。
{
"dependencies": {
"nuxt": "3.12.2"
},
"devDependencies": {
"typescript": "^5.4.5",
"vue-tsc": "^2",
},
"resolutions": {
},
}
解決方法
結論
$ yarn upgrade vue-tsc@^2.0.24
$ yarn upgrade typescript@^5.5
$ yarn upgrade nuxt@^3.12.3
多分、upgrade 順番は関係なく、できます。(順番を切れ変えて試してみましたので)
流れ
vue-tsc upgrade
/home/runner/work/mj_client/mj_client/node_modules/vue-tsc/bin/vue-tsc.js:68
これをみて、vue-tsc から問題があるかなと言っても、仕方がないので、早速検索しました。
nuxt ではなく vue だし、typescript version が 5.5 なんですが、vue-tsc を v2 への upgrade すれば解決できる?と思って、upgrade しました。
$ yarn run tsc-vue@^2
ERROR Cannot start nuxt: Cannot find module 'vue-tsc/out/index'
結果は失敗
resolution
v2 への upgrade してから、このようなエラーか。
v1 と戻るしかないのか。と思いながら、読み続いたら、
dependencies の version を override する keyword を使ったら、すぐ直せそうらしいです。
// yarn.lock
vite-plugin-checker@^0.6.4
確かに、yarn.lock を確認したら、version が低いです。
なので、package.json に resolution を追加してみたら、
// package.json
{
"resolution": {
"vite-plugin-checker": "0.7.0"
}
}
ERROR Cannot start nuxt: Cannot find module 'vue-tsc/out/index'
nuxt, vue-tsc upgrade
同じか...と言っても、下の comment から hint を得られました。
nuxt の version や vue-tsc の version が必要かなと思って、一緒に upgrade しました。
$ yarn upgrade nuxt@^3.12.3
$ yarn upgrade vue-tsc@^2.0.24
ERROR [uncaughtException] Cannot read properties of undefined (reading 'useCaseSensitiveFileNames')
at Object.proxyCreateProgram (node_modules/vite-plugin-checker/node_modules/@volar/typescript/lib/node/proxyCreateProgram.js:33:68)
at node_modules/vite-plugin-checker/dist/esm/checkers/vueTsc/typescript-vue-tsc/lib/typescript.js:120478:134
at Object. (node_modules/vite-plugin-checker/dist/esm/checkers/vueTsc/typescript-vue-tsc/lib/typescript.js:190853:3)
at Module._compile (node:internal/modules/cjs/loader:1241:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12)
at Module.require (node:internal/modules/cjs/loader:1115:19)
at require (node:internal/modules/helpers:130:18)
at Object.configureServer (node_modules/vite-plugin-checker/src/checkers/vueTsc/main.ts:41:21)
他のエラーが出てきた!
全然嬉しくない、っと言っても、さっきのエラーより、わかりやすいです。
多分... @volar/typescript の version がバラバラになっていて、そうかな。yarn.lock から検索したら、version 二つインストールされているし、
// yarn.lock
"@volar/typescript@^2.3.0":
"@volar/typescript@~2.4.0-alpha.2":
これのせいで、間違っている version の module を参考しているかなと思いました。
{
"resolution": {
"@volar/typescript": "2.4.0-alpha.2"
}
}
同じエラーで失敗
yarn.lock node_module 削除/インストール
$ rm -rf node_modules yarn.lock
$ yarn install
エラーなくできました。
が、多いの dependencies が、modules の version が、yarn.lock が変わりました。
元に戻す、無駄遣い
解決は嬉しいが、これほど多く変更したくありません。
なので、yarn.lock の変更の内容を見ながら、色々試してみました。
全部失敗したし、同じエラーなので、詳しく書きません。
- なんか @volar/typescript の dependency @volar/language-core が version 2.4.0-alpha.2 -> 2.4.0-alpha.15 になったので、resolution に追加
-
yarn upgrade vite-plugin-checker@^0.7.0
,yarn upgrade @volar/typescript@^2.4.0
これは新しく module を install しましたので、棄却 yarn add vite
typescript も upgrade したら?
そうだ、最初に参考したことの typescript の version は 5.5 だったので、upgrade しました。
$ yarn upgrade typescript@^5.5
問題なく、build します。
本当にエラーがないのかあれこれ試してみました。
# 元に戻す
$ rm -rf node_modules
$ git switch main
$ yarn run install
$ yarn upgrade vue-tsc@^2.0.24
$ yarn upgrade nuxt@^3.12.3
$ yarn upgrade typescript@^5.5
$ git add .
$ git commit -a
$ git push origin main
github action にも問題なく build されました。
参考&関連 URL