【那些年踩过的坑-前端篇- Mac版本】Mac 从零搭建 Node 环境:nvm + Node + Vue 实战(避坑终极版)

📌 前言:为什么要这么折腾?

很多教程告诉你 curl | bash一把梭,但在国内网络环境 + Mac 新架构(M 系列芯片)下,这往往会遇到:

  • ❌ raw.githubusercontent.com连不上
  • ❌ nvm ls-remote无输出或输出 HTML
  • ❌ Node 装好了但 npm 全局包冲突
  • ❌ zsh 报 insecure directories

本文基于 nvm 官方 GitHub README 与 install.sh 脚本逻辑 ,结合实战踩坑,给出一套 100% 可复现的安装方案。


一、核心原理(Dan Koe 系统思维)

在开始之前,理解这三个东西的关系至关重要:

组件 作用 官方推荐
nvm Node 版本管理器 官方推荐
Node.js JavaScript 运行时 通过 nvm 安装
npm 包管理器 随 Node 自带

核心原则:

  1. 不要直接安装 Node:避免系统级权限污染。
  2. 不要使用 sudo npm install:nvm 的精髓在于用户级隔离。
  3. 国内必须配置镜像:这是成功的关键。

二、Step 1:安装 nvm(从 0 开始)

✅ 前置检查

确保你有 git:

复制代码
git --version

如果没有,先安装 Xcode Command Line Tools:

复制代码
xcode-select --install

✅ 坑 1:官方脚本下载失败(国内高频)

❌ 不推荐(国内常失败):

复制代码
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash

✅ 正确方案:Git Clone(官方支持)

根据 install.sh逻辑,如果 curl失败,应使用 git安装:

复制代码
git clone https://github.com/nvm-sh/nvm.git ~/.nvm
cd ~/.nvm
git checkout v0.40.4

✅ 坑 2:脚本未自动写入 Shell(手动补全 nvm 初始化)

有时 install.sh会因为权限或网络问题 没有自动修改你的 Shell 配置文件。你需要手动补全。

  1. 打开你的 Shell 配置文件(Mac 默认是 zsh):

    复制代码
    open -e ~/.zshrc

    如果文件不存在:

    复制代码
    touch ~/.zshrc
  2. 添加以下内容(这是 nvm 的灵魂):

    复制代码
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
  3. 使配置生效:

    复制代码
    source ~/.zshrc

✅ 验证 nvm 是否安装成功

复制代码
command -v nvm

✅ 正确输出:nvm


三、Step 2:配置国内镜像(解决 Node 版本查询 & 下载)

✅ 坑 3:nvm ls-remote无输出或输出 HTML

如果你执行 nvm ls-remote --lts出现 空白,或者出现:

复制代码
This is not the package you are looking for

这是因为 GitHub / Node 官方源被拦截。

根据 README 中的 Environment variables 说明,我们需要设置镜像。

✅ 解决方案:配置 Node 国内镜像

复制代码
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node

永久生效(强烈推荐):

复制代码
echo 'export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node' >> ~/.zshrc
source ~/.zshrc

✅ 配置 npm 国内镜像(加速依赖下载)

复制代码
npm config set registry https://registry.npmmirror.com

四、Step 3:使用 nvm 安装 & 验证 Node

✅ 安装 Node LTS(推荐)

复制代码
nvm install --lts

✅ 设置默认版本

复制代码
nvm alias default lts/*
nvm use --lts

✅ 完整验证

复制代码
node -v  # 应显示 v20.x.x 或更高
npm -v
nvm ls   # 应显示当前使用的 Node 版本

✅ 正确状态 :node的路径应包含 .nvm,例如:

复制代码
/Users/你的用户名/.nvm/versions/node/v20.18.0/bin/node

五、Step 4:创建并运行 Vue 项目

✅ 创建 Vue 项目

复制代码
npm create vite@latest my-vue-app -- --template vue
cd my-vue-app

✅ 安装依赖并启动

复制代码
rm -rf node_modules package-lock.json # 养成好习惯,确保干净安装
npm install
npm run dev

✅ 浏览器访问 http://localhost:5173,看到 Vue 欢迎页即成功。


六、常见"坑"单独标注(排雷区)

⚠️ 坑 4:.npmrc导致 nvm 冲突

现象:

复制代码
Your user's .npmrc file has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.

解决:

复制代码
nvm use --delete-prefix v24.16.0 --silent

或者手动删除 ~/.npmrc中的 prefix和 globalconfig配置。


⚠️ 坑 5:zsh insecure directories

现象:

复制代码
zsh compinit: insecure directories

原因 :Homebrew 或手动修改导致 /usr/local/share/zsh权限过松。

解决:

复制代码
sudo chown -R $(whoami):staff /usr/local/share/zsh
chmod -R u+rwx,go-w,go+rX /usr/local/share/zsh

⚠️ 坑 6:Node 版本号不存在

现象:

复制代码
Version '20.19.0' not found

原因 :Vite 提示的是 major.minor 要求,并非完整版本号。

解决 :使用 nvm install --lts或查询 nvm ls-remote找真实存在的 patch 版本(如 20.18.0)。


七、总结

  1. 安装 nvm :放弃 curl | bash,使用 git clone更稳定。
  2. 初始化 nvm :若脚本未自动写入,务必手动补全 ~/.zshrc。
  3. 国内镜像 :必须配置 NVM_NODEJS_ORG_MIRROR和 npm registry。
  4. Node 管理 :始终使用 nvm install和 nvm use。

按照这套流程,你的 Mac 将拥有一个 干净、隔离、可随时切换版本 的 Node 开发环境,足以应对 Vue等各种复杂实战场景。


如果这篇文章解决了你的环境难题,请不要吝啬你的 👍 (点赞) 和 ⭐ (收藏)!

有任何环境搭建的疑问,欢迎在评论区留言交流。


相关推荐
行者全栈架构师8 分钟前
【鸿蒙心迹】互动卡片全链路——把核心功能放到桌面(FormKit 实战)(HarmonyOS 7.x)
前端·算法·架构
java1234_小锋10 分钟前
【技术专题】HTML5 网页技术 - HTML5 表单基础以及增强
前端·html·html5
燕落南枝14 分钟前
HTML 学习:辅助标签 label 与字符实体
前端·学习·html
不简说18 分钟前
AI 帮你画模板、点一下就云打印:sv-print 这三个月都干了啥
前端·javascript·人工智能
Amos_Web18 分钟前
Rspack 源码解析(二十六):CssPlugin 与 CssChunkingPlugin 如何保证 CSS 顺序并切分 chunk
前端
孙浩君27 分钟前
0行手写代码,我用AI做了一个打工人模拟器(含3D霓虹城市漫游)
前端·后端
夏天要喝冰可乐28 分钟前
用 Codex 连接 Blender,我做了一块可以走进楼宇的大屏
前端·three.js
醒醒11139 分钟前
从微信小程序到全端:一个安全扫描器的演进之路(v0.5.0 → v0.6.0)
前端·安全
seconp41 分钟前
计算机毕设做什么项目?整理了 80 个 Web、小程序、AI 与数据方向
前端·小程序·课程设计
代码小学僧1 小时前
如何低成本部署网站?Vercel 和 Cloudflare 怎么选?
前端·后端·serverless