"sh: node: command not found error" 在 zsh 中的 npm postinstall

"sh: node: command not found error" in npm postinstall in zsh

我使用 zsh 作为默认命令行 shell。我已经使用 nvm.

安装了 node

当我尝试安装 GatsbyJS 时出现错误

npm i -g gatsby-cli
....
npm ERR! code 127
npm ERR! path /Users/username/~/.nvm/versions/node/v16.0.0/lib/node_modules/gatsby-cli
npm ERR! command failed
npm ERR! command sh -c node scripts/postinstall.js
npm ERR! sh: node: command not found

似乎 gatsby-cli 试图在 sh shell 中使用 node 运行 postinstall.js 脚本,但它在那里不可用,因为我的nvm/node 在 .zshrc 中声明。

我能够 运行 通过创建一个 .profile 文件在 sh 中 运行 nvm 和节点:

export NVM_DIR="~/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh

export PATH=/usr/local/bin:$PATH

但我需要为每个 sh 会话 运行 source ~/.profile,否则,它不起作用。由于 post-install 生成一个新的 sh 会话,我不能强制它使用 .profile.

我在所有这些 shell 方面都不是很擅长,因此感谢您的帮助。

(注意:我在安装其他 npm 包时没有这样的问题,例如 webpack-cli)

问题出在 nvm 安装上。

修复步骤:

  1. 按照answer
  2. 中所述编辑.zshrc
  3. 通过 nvm 重新安装节点