应使用 nvm 管理 node.js 版本,避免系统自带 node;安装 nvm 后配置 ~/.zshrc 并 source,用 nvm install/use 切换版本;yarn 优先启用 corepack 而非全局 npm 安装。

用 nvm 管理 Node.js 版本,别碰系统自带的 node
MacOS 自带的 node(实际是 nodejs 的符号链接)位于 /usr/bin/node,权限受限、无法升级、且与 Homebrew 或手动安装冲突。直接覆盖或卸载风险高,还会破坏 Xcode 命令行工具依赖。
正确做法是用 nvm(Node Version Manager)彻底隔离:它把不同版本装在用户目录下,通过 shell 配置动态切换 PATH,互不干扰。
- 运行
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash安装(注意用最新稳定版号,可查 GitHub releases) - 编辑
~/.zshrc(macOS Catalina 及以后默认用 zsh),追加三行:export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
- 执行
source ~/.zshrc生效,再运行nvm --version确认可用 - 装一个 LTS 版本:
nvm install --lts,然后nvm use --lts;后续项目需要特定版本时,进项目目录运行nvm install 18.19.0+nvm use即可
yarn 别用 npm install -g yarn,优先走 corepack
全局 npm 安装的 yarn 会绑定当前 node 版本,换 nvm use 后可能失效,报错 command not found: yarn 或版本错乱。官方已推荐 corepack——它是 Node.js 内置的包管理器代理,随 Node 启动自动激活,无需额外安装。
- 确认 Node.js 版本 ≥ 16.13(
node -v),然后启用:corepack enable - 检查是否生效:
which yarn应返回/opt/homebrew/bin/yarn(Apple Silicon)或/usr/local/bin/yarn(Intel),而非~/.npm-global/bin/yarn - 项目中想固定 Yarn 版本?在
package.json里加字段:"packageManager": "yarn@4.3.1",下次yarn命令会自动匹配该版本 - 若已有旧版全局 yarn,先删掉:
npm uninstall -g yarn,再rm -f $(which yarn),避免残留冲突
验证环境是否干净:检查 PATH 和二进制来源
配置完常以为万事大吉,但终端新开窗口后 node 或 yarn 找不到,大概率是 PATH 没刷进去,或多个安装源打架。必须人工确认来源。
- 运行
which node,结果应为~/.nvm/versions/node/v20.11.1/bin/node这类路径(含nvm字样);若还是/usr/bin/node,说明nvm.sh没加载成功,回头检查.zshrc和source - 运行
node -p process.version和yarn -v,对比是否与nvm current和packageManager字段一致 - 运行
echo $PATH,确保~/.nvm/versions/node/...和~/.nvm/alias/...在最前面,Homebrew 路径(如/opt/homebrew/bin)其次;如果/usr/local/bin或/usr/bin排太前,要调整.zshrc中export PATH=...的顺序
遇到 permission denied 或 EACCES 错误怎么办
这类错误基本都源于 npm 全局模块写入了系统路径(如 /usr/local/lib/node_modules),而 macOS 默认禁止普通用户写入。不是权限问题,是路径错了。
- 永远不要用
sudo npm install -g—— 它会把模块装进系统目录,后续所有操作都要 sudo,形成恶性循环 - 让 npm 使用用户目录:
mkdir ~/.npm-global,然后npm config set prefix '~/.npm-global',再把~/.npm-global/bin加进PATH(写入.zshrc) - 但更省心的做法是:压根不用全局 npm 包。前端常用工具如
eslint、typescript全部作为devDependencies装在项目里,用npx eslint .调用,完全绕过全局安装 - 如果非要用全局 CLI(比如
vercel),优先选corepack支持的(如yarn dlx vercel),或用npm install -g --userconfig ~/.npmrc显式指定配置
实际配置中最容易被忽略的是 shell 配置文件的加载时机和 PATH 顺序。新开终端窗口、IDE 内置终端、VS Code 的 Tasks,它们启动时读的 shell 配置可能不一致,导致环境变量没生效。建议每次改完 .zshrc,都关掉所有终端重开,再逐条验证命令输出。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










