先日、npm でエラーが発生してビルドに失敗しました。という記事をアップしたばかりなのですが、またまた別のトラブルに見舞われました...
当サイトのブログ用エディタはVSCode拡張機能で実装しているのですが、機能追加を思い立ちました。
最新のVSCode拡張機能テンプレートのdependenciesに合わせようと、新規テンプレートを作成したところで、以下のようにエラーが...。
C:\Dev\_practice\vscode>yo code
_-----_ ╭──────────────────────────╮
| | │ Welcome to the Visual │
|--(o)--| │ Studio Code Extension │
`---------´ │ generator! │
( _´U`_ ) ╰──────────────────────────╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `
? What type of extension do you want to create? New Extension (TypeScript)
? What's the name of your extension? test
? What's the identifier of your extension? test
? What's the description of your extension?
? Enable stricter TypeScript checking in 'tsconfig.json'? Yes
? Setup linting using 'tslint'? Yes
? Initialize a git repository? No
? Which package manager to use? yarn
events.js:183
throw er; // Unhandled 'error' event
^
AssertionError [ERR_ASSERTION]: Trying to copy from a source that does not exist: C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\generators\app\templates\ext-command-ts/vscode
at EditionInterface.exports.copy (C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\node_modules\mem-fs-editor\lib\actions\copy.js:48:3)
at module.exports._writingCommandTs (C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\generators\app\index.js:670:17)
at module.exports.writing (C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\generators\app\index.js:553:22)
at Object.<anonymous> (C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\node_modules\yeoman-generator\lib\index.js:424:27)
at C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\node_modules\run-async\index.js:25:25
at new Promise (<anonymous>)
at C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\node_modules\run-async\index.js:24:19
at self.env.runLoop.add.completed (C:\Program Files (x86)\Nodist\bin\node_modules\generator-code\node_modules\yeoman-generator\lib\index.js:425:13)
at runCallback (timers.js:810:20)
at tryOnImmediate (timers.js:768:5)
なんかトラブル続きだ...
これは何か憑いているのかと後ろを振り返ってみたりもしますが、霊感無いので何も見えません。
さて、戯言はさておき。
エラーメッセージの最初の方にTrying to copy from a source that does not exist: C:\Program Files...
とあるので、書かれているパスをよく見ると最後の/vscode
だけパス区切り文字がスラッシュになっています。
これかぁと思い、該当のフォルダをさかのぼって、generator-codeのjsを見つけて書き直してみたりしたのですが、結果変わらず...。
バックスラッシュであれスラッシュであれ、うまく解決して処理するようになっているようです。
うーん...。
このyoテンプレートもGitHubで管理されているのでissueを色々調べたのですが、あてはまるものを見つけられませんでした。
Node.jsのバージョンが低いからなのかなぁ、と思い、Nodistで最新バージョンに切り替えようとしたところ、nodist npm global match
でエラーが...
Nodistの問題なのかなぁ...と思い、思い切ってNodistでの管理を止めることにしました。
そもそもNodistを入れていたのは最新node.jsにするのが簡単かなぁと思ったからで、node.jsのバージョンを切り替えて使う用途には使用していませんでした。
最新にするだけなら、chokolateyでの管理でいいか...と思いnodistはアンインストールしてchocolateyでnode.js LTS
というのをインストールしなおしました。
node.jsを入れなおしたので、yoやgenerate-codeなどグローバルに入れているコマンドも再度インストールしなおして、再度yo code
してみたら...エラー無しであっさり作成されちゃいました。
やっぱり、nodist環境に問題があったようです。原因はわかりませんが...
決してnodistを否定しているわけではありませんが、トラブルに見舞われても解決できるような人じゃないと特殊な環境は使いこなせないですねぇ...。
このトラブルシューティングが誰かの参考になれば幸いです。
って、トラブルシュートになっていませんが...