🧚

pnpm 導入時に起きたエラー対処法

2023/12/08に公開

概要

M1 搭載の Mac に pnpm を実行できる環境の導入

環境

  • Mac M1
  • Homebrew 4.1.22
  • nodebrew v8.9.4
  • Node 20.10.0
  • npm 10.2.3
  • npx 10.2.3

nodebrew で node.js をインストールする

手順

まず、nodebrew がインストールされていることを確認する。

nodebrew -v

もしインストールされていない場合は、以下のコマンドを実行してインストールしてください。

brew install nodebrew

インストールされていることが確認できたら、以下のコマンドでインストール可能な node.js のバージョン一覧を確認する。

nodebrew ls-remote

確認後、node.js をバージョンを指定して、あるいは、LTSを指定してインストールする。
バージョン指定の場合 ※指定するバージョンで{version}を置換してください。

nodebrew install-binary {version}

安定版を指定する場合

nodebrew install-binary stable

発生したエラー

nodebrew ls-remote 実行時にエラー

nodebrew ls-remoteを実行した際に、以下のようなエラーが出力されました。

Fetching: https://nodejs.org/dist/{version}/node-{version}-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Users/whoami/.nodebrew/src/{version}/node-{version}-darwin-x64.ta
Warning: r.gz: No such file or directory

curl: (23) Failed writing body (0 != 941)
download failed: https://nodejs.org/dist/{version}/node-{version}-darwin-x64.tar.gz

これは以下のコマンドを実行することで解決することができました。

nodebrew setup

再度nodebrew ls-remoteを実行してもエラーが出力されず、期待通りの動作を確認することができました。

nodebrew install-binary stable 実行時にエラー

nodebrew install-binary stable 実行時に以下のエラーが出力されました。

Fetching: https://nodejs.org/dist/{version}/node-{version}-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Users/masahito/.nodebrew/src/{version}/node-{version}-darwin-x64.tar.gz: 
Warning: No such file or directory
curl: (23) Failure writing output to destination

download failed: https://nodejs.org/dist/{version}/node-{version}-darwin-x64.tar.gz

以下のコマンドを実行することで解決しました。

curl -L git.io/nodebrew | perl - setup

再度nodebrew install-binary stableを実行してもエラーが出力されず、LTS の node.js をインストールすることができました。

pnpm をインストールする

手順

以下のコマンドを実行する。

npm install -g pnpm

発生したエラー

npm install -g pnpm を実行した際に以下のエラーが出力される可能性があります。

npm ERR! code EACCES
npm ERR! syscall rename
npm ERR! path /usr/local/lib/node_modules/pnpm
npm ERR! dest /usr/local/lib/node_modules/.pnpm-LW2coPit
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, rename '/usr/local/lib/node_modules/pnpm' -> '/usr/local/lib/node_modules/.pnpm-LW2coPit'
npm ERR!  [Error: EACCES: permission denied, rename '/usr/local/lib/node_modules/pnpm' -> '/usr/local/lib/node_modules/.pnpm-LW2coPit'] {
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'rename',
npm ERR!   path: '/usr/local/lib/node_modules/pnpm',
npm ERR!   dest: '/usr/local/lib/node_modules/.pnpm-LW2coPit'
npm ERR! }
npm ERR! 
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR! 
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

npm ERR! A complete log of this run can be found in: /Users/ny/.npm/_logs/2023-12-08T05_27_32_874Z-debug-0.log

こちらのエラーは、特定のファイルへのアクセス権限がないため発生しているエラーであるので、rootユーザーで実行することで解決されました。

sudo npm install -g pnpm

pnpm 初回実行時に発生したエラー

pnpm のインストールが完了し、pnpm コマンドを実行すると以下のようなエラーが出力される場合があります。

ERR_PNPM_UNSUPPORTED_ENGINE  Unsupported environment (bad pnpm and/or Node.js version)

Your Node version is incompatible with "/Users/[My name]/Projects/[My organisation]/[My project]".

Expected version: >= 8.9.4 < 15.0
Got: v19.7.0

This is happening because the package's manifest has an engines.node field specified.
To fix this issue, install the required Node version.

エラ〜メッセージを確認すると、node -vで出力されるバージョンと異なる node.js バージョンが pnpm コマンド実行時に指定されています。
これは以下のコマンドを実行することで解決されました。参考

pnpm add -g pnpm

おまけ

pnpm の npx に当たるものを調べたところ pnpm dlx でした。
pnpm dlx

Discussion