Salesforce CLIにやってみたときの対応ログです。バージョンを最新版にアップデートしようと思って npm update コマンドを実行したのですが、インターネットに少しつながりにくいところでコマンドを実行していたため、処理が終わりませんでした。一旦終了しようと「ctrl + c」キーで処理を止めたのですが、それが良くなかったようで動かなくなってしまいました。
npm update -g @salesforce/cli コマンド実行
taiki.yoshikawa@MacBook ~ % npm update -g @salesforce/cli npm error code ENOTEMPTY npm error syscall rename npm error path /opt/homebrew/lib/node_modules/@salesforce/cli npm error dest /opt/homebrew/lib/node_modules/@salesforce/.cli-u1u13S8L npm error errno -66 npm error ENOTEMPTY: directory not empty, rename '/opt/homebrew/lib/node_modules/@salesforce/cli' -> '/opt/homebrew/lib/node_modules/@salesforce/.cli-u1u13S8L' npm error A complete log of this run can be found in: /Users/taiki.yoshikawa/.npm/_logs/2025-01-13T00_50_40_796Z-debug-0.log taiki.yoshikawa@MacBook ~ %
sf -v コマンド実行時
taiki.yoshikawa@MacBook ~ % sf -v node:internal/modules/esm/resolve:275 throw new ERR_MODULE_NOT_FOUND( ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@oclif/core/execute' imported from /opt/homebrew/lib/node_modules/@salesforce/cli/dist/cli.js at finalizeResolution (node:internal/modules/esm/resolve:275:11) at moduleResolve (node:internal/modules/esm/resolve:860:10) at defaultResolve (node:internal/modules/esm/resolve:984:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:716:12) at #cachedDefaultResolve (node:internal/modules/esm/loader:640:25) at ModuleLoader.resolve (node:internal/modules/esm/loader:623:38) at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:276:38) at ModuleJob._link (node:internal/modules/esm/module_job:136:49) { code: 'ERR_MODULE_NOT_FOUND', url: 'file:///opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@oclif/core/execute' } Node.js v23.6.0
幸いなことにnodeやnpm、homebrewなどは問題ない状態。salesforce cliのエラーが解決すれば元通りです。
試したこと1
アップデートはエラーになるのでもう一回インストールすればいいんじゃないかとインストールコマンド実行してみました。
結果はupdateコマンドと同じで受け付けない状態。(ファイルが無いとかいってる。)
taiki.yoshikawa@MacBook ~ % npm install @salesforce/cli --global npm error code ENOTEMPTY npm error syscall rename npm error path /opt/homebrew/lib/node_modules/@salesforce/cli npm error dest /opt/homebrew/lib/node_modules/@salesforce/.cli-u1u13S8L npm error errno -66 npm error ENOTEMPTY: directory not empty, rename '/opt/homebrew/lib/node_modules/@salesforce/cli' -> '/opt/homebrew/lib/node_modules/@salesforce/.cli-u1u13S8L' npm error A complete log of this run can be found in: /Users/taiki.yoshikawa/.npm/_logs/2025-01-13T00_54_22_375Z-debug-0.log taiki.yoshikawa@MacBook ~ %
試したこと2
「sf doctor」コマンド動かしてみました。これもだめ。(sfコマンド自体受け付けない)
taiki.yoshikawa@MacBook ~ % sf doctor node:internal/modules/esm/resolve:275 throw new ERR_MODULE_NOT_FOUND( ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@oclif/core/execute' imported from /opt/homebrew/lib/node_modules/@salesforce/cli/dist/cli.js at finalizeResolution (node:internal/modules/esm/resolve:275:11) at moduleResolve (node:internal/modules/esm/resolve:860:10) at defaultResolve (node:internal/modules/esm/resolve:984:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:716:12) at #cachedDefaultResolve (node:internal/modules/esm/loader:640:25) at ModuleLoader.resolve (node:internal/modules/esm/loader:623:38) at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:276:38) at ModuleJob._link (node:internal/modules/esm/module_job:136:49) { code: 'ERR_MODULE_NOT_FOUND', url: 'file:///opt/homebrew/lib/node_modules/@salesforce/cli/node_modules/@oclif/core/execute' } Node.js v23.6.0
試したこと3
「brew doctor」も試してみました。一つWarningが出ていたけど、今回の件とは別件..かな?
taiki.yoshikawa@MacBook ~ % brew doctor Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: Unbrewed static libraries were found in /usr/local/lib. If you didn't put them there on purpose they could cause problems when building Homebrew formulae and may need to be deleted. Unexpected static libraries: /usr/local/lib/libTMAESCrypt.a
試したこと4
1から3はもしかしたらで試してみてそのログでした。ここがメイン。とりあえずアンインストールして最初からやり直す方法です。
アンインストールのコマンドは次を順番に動かしていけば良さそう。
sudo rm -rf /usr/local/sfdx sudo rm -rf /usr/local/lib/sfdx sudo rm -rf /usr/local/bin/sfdx sudo rm -rf ~/.local/share/sfdx ~/.config/sfdx ~/.cache/sfdx sudo rm -rf ~/Library/Caches/sfdx sudo rm -rf /usr/local/sf sudo rm -rf /usr/local/bin/sf sudo rm -rf ~/.local/share/sf ~/.config/sf ~/.cache/sf sudo rm -rf ~/Library/Caches/sf
実行した結果はこんな感じ。1つめのコマンドはPCのパスワード求められました。
これでもう一度インストールコマンドを実行すれば..解決しませんでした。
試したこと5
今度はちゃんとエラーメッセージを確認。homebrewのパスが無いとか言ってる。(homebrewなんか関係あるのかな..)
上のエラーを調べる前にもう一つ。npm コマンドでアンインストールできることを知りました。
バージョンごとに用意されているみたいですが、とりあえず両方動かしてみます。片方がエラーになりました。
エラーメッセージにログが入ってることを確認。けっこうファイル作成されてた。開いてみてみたけどだいたいさっき出ていたエラーメッセージと同じ。
Homebrew 関係のパスということで次のキーワードで再度検索してみました。
npm error path /opt/homebrew/lib/node_modules/
それらしい解決方法が。
Salesforce CLI はbrewコマンドのインストールではないのでこのコマンドをそのまま動かす必要は無いはずですが、不要なファイルを一度消せば入れ直せるかな。
先ほどのエラーログ・ファイルを開いてパスを見て「/opt/homebrew/lib/node_modules/@salesforce/cli」のファイル名がとか言っているので現在のフォルダを状況を確認。
cd /opt/homebrew/lib/node_modules pwd ls -la
homebrewの中のlibの中のnodemodulesに@salesforceが残っている。(アンインストールコマンドじゃ消えないんだ。)
ちなみに@salesforceディレクトリの中身はこんな感じ。
試したこと6(まとめ)
正しい方法では無い気がしますが、最終的にnode modulesの@salesforceフォルダを削除する方法で対応しました。
rm -rfコマンドで@salesforceフォルダを破棄。なくなっていることも確認。
sf コマンドを実行。まずは呼び出せないこと、先程のエラーにならないことを確認。nodeとnpm、brewコマンドはちゃんと動いていることも確認。
この状態で npm install コマンドで salesforce cliを再度インストール。エラーにならずに再度インストールができることを確認しました。インストール完了後にsfコマンドもちゃんと実行できることを確認。
update コマンドやhelpコマンドも大丈夫そう。これでエラー解決したっぽい。
今回動かなくなってしまったときのやったこととしては上記のような感じです。まとめの部分に記載した「rm -rf」コマンドでnodemodulesに残っている@salesforceファイルを消すという作業は、正しい方法なのかかなり怪しいですが、一応これで解決できました。SalesforceCLIの本来のアンインストール操作をしてそれでも解決しないときの最後の手段の選択肢の一つという感じでメモしておきます。
そもそも今回のエラーのきっかけが npm update コマンドを途中で終了したという普通やらない操作がきっかけでした。なのでこんなエラー自体は普通おきないものだと思います。とりあえずinstallやupdateコマンドは途中停止はしてはいけなかったということで気をつけようと思います。