解决通过 fnm 安装的 nodejs 在终端中无法使用和切换的问题

你正在阅读的是本文 2024-10-07 14:15:11 的历史版本,内容可能已经过时。

→ 阅读本文的最新版本

发现在 macOS 15 上通过 fnm 安装的 nodejs,在终端重启后,总是无法被使用和切换,通过 node -v 会得到提示「找不到 node 命令」。

研究后发现是安装路径问题导致了 shell 配置文件(我用的是 zsh,所以配置文件是 ~/.zshrc,以下同样)中对应的代码执行的失败。安装完 fnm 后会在 shell 配置文件中自动添加

# fnm
FNM_PATH="/Users/your_account_name/Library/Application Support/fnm"
if [ -d "$FNM_PATH" ]; then
  export PATH="/Users/your_account_name/Library/Application Support/fnm:$PATH"
  eval "`fnm env`"
fi

实际情况是,fnm 的安装目录并不是上面这个目录,实际目录是 /Users/your_account_name/.local/share/fnm,该目录可以通过 fnm env 命令获取到。修改上面的代码即可解决问题

# fnm
FNM_PATH="$HOME/.local/share/fnm"
if [ -d "$FNM_PATH" ]; then
  export PATH="$FNM_PATH/bin:$PATH"
  eval "$(fnm env)"
else
  echo "FNM_PATH does not exist"
fi

上面代码中的 else 部分可以直接去掉。还有一个解决办法是直接将 fnm env 命令获取到的内容,一股脑贴在 shell 配置文件里也行。