在zsh中的npm postinstall中出现"sh: node: command not found"错误。

9 浏览
0 Comments

在zsh中的npm postinstall中出现"sh: node: command not found"错误。

我使用zsh作为默认的命令行shell。我已经使用nvm安装了node。\n当我尝试安装GatsbyJS时出现错误:\n

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

\n看起来gatsby-cli试图在sh shell中使用node运行postinstall.js脚本,但是那里没有可用的node,因为我的nvm/node在.zshrc中声明。\n我能够通过创建一个.profile文件在sh中运行nvm和node,如下所示:\n

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

\n但是我需要为每个sh会话运行source ~/.profile,否则它不起作用。由于post-install生成了一个新的sh会话,我无法强制它使用.profile。\n我对所有这些shell相关的内容不是很擅长,所以需要帮助。

0
0 Comments

问题出现的原因是在nvm安装中。

解决方法如下:

  1. 按照答案中提到的方法编辑.zshrc文件
  2. 通过nvm重新安装node
0