环境准备 / 第 1 课
先准备 Ubuntu 与开发工具
在 Windows 上选择 WSL2 或 VMware 安装 Ubuntu,再配置国内镜像、nvm、Node.js、npm、pnpm 和 Git。
这节先把工具准备好,不要求你已经会写 JavaScript。后面的命令会注明在哪个终端运行;不要把 PowerShell 和 Ubuntu Bash 当成同一个环境。学习时间是安排建议,不含系统和软件的下载等待。
本教程选择 Windows 11、Intel/AMD 64 位电脑、Ubuntu 24.04 LTS、Node 22 与 pnpm 10。 Node 需要达到项目下限 22.12。这些是为了与课程项目配套的版本选择,不代表你必须追最新版本。
1. 安装 Ubuntu:两条路选一条
优先用 WSL2,它让你在 Windows 中使用 Linux 环境。想使用完整 Ubuntu 桌面、或希望练习独立虚拟机时,再选 VMware Workstation Pro。不需要两条路都安装。
路径 A:WSL2(推荐)
在 Windows 开始菜单搜索 PowerShell,右键选择“以管理员身份运行”。先看可安装的发行版,再安装指定版本:[1]
wsl --list --online
wsl --install -d Ubuntu-24.04
按提示启用组件、下载并安装。需要重启时,先重启 Windows;之后从开始菜单打开 Ubuntu。首次启动会解压文件,再让你创建 Linux 用户名和密码。Linux 密码与 Windows 账户密码无关;输入时不会显示字符或星号,这是正常的。[6]
回到 PowerShell,检查安装结果:
wsl -l -v
应看到 Ubuntu-24.04,对应的 VERSION 为 2。这里的 2 是 WSL 版本,不是 Ubuntu 版本。如果列表没有 Ubuntu-24.04,或安装要求更新 Windows/WSL,按微软安装页处理后再继续;不要随意换成别的 Ubuntu 版本。[1]
路径 B:VMware Workstation Pro
- 按 Broadcom 官方下载说明注册或登录 Support Portal,取得 Windows 版 Workstation Pro。官方提供的免费版本无需许可证密钥;下载可能要求完成账号资料和验证。使用官方入口,不下载第三方破解包。[8]
- 打开 Ubuntu 24.04 镜像目录,选择 Desktop image / amd64 的 ISO。文件名类似
ubuntu-24.04.x-desktop-amd64.iso,不是 Server 镜像,也不是 WSL 镜像。[7] - 在 VMware 新建虚拟机,把 ISO 作为安装介质。网络先选 NAT,按向导启动 Ubuntu 安装器。[2]
- 安装方式选“擦除磁盘并安装 Ubuntu”时,确认操作对象是这台虚拟机的虚拟磁盘。不要对 Windows 的实体磁盘或分区做擦除。完成后重启虚拟机,必要时断开 ISO,再从虚拟磁盘启动。
- 课堂配置建议:2 个 CPU 核心、4–8 GB 内存、40 GB 可扩展虚拟磁盘。它们是教学建议,不是官方最低要求;分配时给 Windows 留出足够资源。
以下两个路径的后续步骤相同:进入你安装好的 Ubuntu,使用它的 Terminal。VMware 路径通常可以用 Ctrl+Alt+T 打开终端。
2. 认识 Ubuntu 终端与文件位置
从这里开始,除明确标注为 PowerShell 的命令外,全部在 Ubuntu 中运行。提示符后输入命令,再按 Enter。sudo 表示以管理员权限执行命令,可能要求输入刚创建的 Linux 密码。
先确认系统、架构,并创建练习目录:
cat /etc/os-release
uname -m
dpkg --print-architecture
mkdir -p ~/projects
cd ~/projects
pwd
ls
应看到 Ubuntu 24.04、代号 noble;本文目标电脑通常显示 x86_64 和 amd64。~ 是 Linux 家目录,mkdir -p 创建目录,cd 切换位置,pwd 显示当前位置,ls 列出文件;新目录没有文件很正常。
把练习放在 ~/projects,不要默认放在 /mnt/c/...。WSL 的 /mnt/c 对应 Windows 磁盘;微软建议 Linux 工具处理的项目放在 Linux 文件系统中,避免跨文件系统访问带来的性能问题。[6]
如果系统不是 24.04,或架构不是 amd64,先不要照抄下一节镜像地址。ARM 等架构应使用对应的 Ubuntu Ports 配置。[21]
3. 配置 Ubuntu 国内镜像
Ubuntu 24.04 使用 deb822 格式,常见配置文件是 /etc/apt/sources.list.d/ubuntu.sources。我们只改主软件源的地址,保留发行版代号、签名密钥和官方安全更新源。[3]
首次修改前备份一次,不要在每次重试时覆盖这份原始备份:
sudo cp -a /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
sudo nano /etc/apt/sources.list.d/ubuntu.sources
若文件不存在,先确认 Ubuntu 版本与实际的软件源文件,不要新建一个空文件后继续。如果系统没有 nano,先用原软件源执行 sudo apt update、sudo apt install nano 再编辑。
在 nano 中找到主软件源段落,将它的 URIs: 行改为:
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
不要修改该段的 Suites:、Components:、Signed-By:。Signed-By 通常指向 /usr/share/keyrings/ubuntu-archive-keyring.gpg,保留系统原有密钥设置。24.04 应继续使用 noble、noble-updates、noble-backports。安全更新段落中的 noble-security 和原有官方 security.ubuntu.com 地址保持不变;TUNA 提醒镜像同步可能延迟,不建议替换 security 源。[3]
nano 保存:Ctrl+O → Enter 确认文件名;退出:Ctrl+X。然后更新索引并安装基础工具:
sudo apt update
sudo apt install curl ca-certificates git nano openssh-client
apt update 刷新软件包索引,不是升级全部软件。确认它没有错误;安装询问是否继续时,阅读列表再确认。curl 用于下载,CA 证书支持 HTTPS,Git 管理版本,OpenSSH 提供 SSH 与密钥工具,nano 是文本编辑器。
编辑有误时可以还原:
sudo cp -a /etc/apt/sources.list.d/ubuntu.sources.bak /etc/apt/sources.list.d/ubuntu.sources
sudo apt update
不要删掉 Signed-By、跳过签名验证或关闭 TLS 检查来掩盖报错。也不要把镜像帮助页当前默认的其他发行版代号复制到 24.04。本文不用 apt 安装 nodejs 或 npm,下一节统一用 nvm 管理。
4. 用 nvm 管理 Node.js
nvm 是 Node.js 版本管理器。它按 Linux 用户安装,不是 Windows 的 nvm-windows;Node 自带 npm,所以不必再单独安装 npm。[9]
安装并加载 nvm
本课固定使用 nvm 官方 v0.40.8。先下载到文件,再执行;下载失败就停止,不要执行空文件或错误页面。[9][26]
mkdir -p "$HOME/.cache"
curl -fL --retry 3 -o "$HOME/.cache/nvm-install-v0.40.8.sh" \
https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh
bash -n "$HOME/.cache/nvm-install-v0.40.8.sh"
bash "$HOME/.cache/nvm-install-v0.40.8.sh"
source ~/.bashrc
command -v nvm
nvm --version
bash -n 只检查语法,不执行,也不是安全审计。认准官方仓库 nvm-sh/nvm 与上述固定版本。command -v nvm 应输出 nvm;它是 shell function,不是单独的可执行文件,不能靠 which nvm 判断是否安装成功。[4][9]
若安装完成却找不到命令,先重新打开 Ubuntu 终端,或执行 source ~/.nvm/nvm.sh。若每次开新终端仍找不到,检查安装器提示的 Bash 配置文件是否有 nvm 加载行;不要用 sudo 重跑安装器。nvm 自身下载需要访问 GitHub,下面的 Node/npm 镜像不会代替它代理 GitHub。
首次下载前,设置 Node 二进制镜像
Node 安装文件的镜像与 npm 包镜像是两个设置。这里选用 npmmirror 的 Node 发布文件镜像。[9][11] 2026-10-05 的索引核查中,它与官方 Node 22 分支一致。[34][35] 先设置,再首次下载 Node。镜像可能延迟同步,发现版本缺失或滞后时可改回官方地址。
export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node/"
nvm install 22
nvm alias default 22
nvm use 22
node -v
npm -v
command -v node
command -v npm
应使用当前 22 系列版本,且不低于 22.12;Node/npm 路径应位于 Linux 家目录下的 .nvm/versions/node/...。不要继续使用从 /mnt/c/... 找到的 Windows 工具。
上面的 export 只影响当前终端。想持久使用镜像,用 nano ~/.bashrc 在末尾追加这一行,保存后 source ~/.bashrc;不要覆盖整个配置文件:
export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node/"
恢复官方 Node 下载地址时,先从配置文件删除这行,再在当前终端执行:
unset NVM_NODEJS_ORG_MIRROR
只删除配置行不会自动清除当前终端已有的变量。镜像只影响后续下载,不改变已经安装好的 Node。
切换项目版本
项目提供 .nvmrc 时,进入项目目录执行:
nvm install
nvm use
nvm 会读取该文件指定的版本;默认不会因为你执行了 cd 就自动切换。nvm use default 切回默认版本。不同 Node 版本的全局 npm 工具分开存放,切换后可能需要重新安装 pnpm。[9]
5. 配置 npm 镜像与安装 pnpm
npm 包镜像
npm 从 registry 取得依赖包。安装好 Node 后,将用户级 registry 设置为 npmmirror,再确认实际配置:[11][13]
npm config set registry https://registry.npmmirror.com/ --location=user
npm config get registry
恢复官方源:
npm config set registry https://registry.npmjs.org/ --location=user
Node 二进制镜像负责下载 Node,npm registry 负责下载包;两者不能填到同一个设置中。registry 也不能保证 GitHub 地址或 git 类型的依赖下载变快。项目 .npmrc、环境变量等可能覆盖用户设置,所以要在实际项目目录查询,不要只看一次配置成功就认定所有项目都生效。[13]
安装课程使用的 pnpm 10
pnpm 也是包管理工具。本课程按现有项目选用主版本 10;官方兼容表确认 pnpm 10 支持 Node 22。[12]
npm install -g pnpm@10
pnpm -v
command -v pnpm
pnpm config get registry
全局安装在当前 nvm 的 Node 目录中,不要加 sudo。pnpm 会读取相关 npm 配置;查询结果应符合当前项目需要。如果遇到权限错误,先检查 Node/npm 的路径与 npm config get prefix,不要用 sudo npm 或给整个目录开放写权限来绕过去。
系统软件安装用 apt,Node 版本由 nvm 管理,项目依赖由 npm/pnpm 管理。以后进入项目,应按它的锁文件和说明选一个包管理器,不要在同一项目里来回产生不同锁文件。
6. 安装与使用 Git
Git 已在基础工具中安装。先检查版本,再配置提交时使用的名字、邮箱和新仓库默认分支;把占位文字换成自己的信息。这些配置只作用于你的 Ubuntu 用户,不会登录 GitHub。[14]
git --version
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
git config --global init.defaultBranch main
做一次本地提交
在新的练习目录里操作。目录已存在时,换一个名字,不要覆盖原项目:
cd ~/projects
mkdir git-practice
cd git-practice
git init -b main
printf '我的第一份练习\n' > README.md
git status
git add README.md
git status
git commit -m "创建练习说明"
git log --oneline
git status
工作区是你正在编辑的文件;git add 选择本次要提交的更改,放进暂存区;git commit 将暂存内容保存成本机版本记录。最后应有一条提交,工作区干净。提交不等于上传到 GitHub。以后改文件,再重复 status → add → commit;不要把密码、令牌、.env 或依赖目录加入提交。[15]
配置 GitHub SSH(需要上传时再做)
先注册自己的 GitHub 账号,并检查 Ubuntu 是否已有 SSH 密钥:
ls -la ~/.ssh
目录不存在很正常;已有密钥时不要覆盖。不需要复用旧密钥时,可生成 Ed25519 密钥,按提示选择保存位置并设置口令:[17]
ssh-keygen -t ed25519 -C "你的GitHub邮箱"
选择默认保存位置后,只复制 .pub 公钥:
cat ~/.ssh/id_ed25519.pub
在 GitHub 的 Settings → SSH and GPG keys → New SSH key 添加它。id_ed25519 没有 .pub 后缀,是私钥,不能上传、分享或贴到聊天;口令也只在本机提示时输入。[19]
然后测试连接:
ssh -T git@github.com
首次连接询问主机真实性时,先与 GitHub 官方 SSH 指纹核对,匹配才确认。成功提示会包含你的用户名和“不提供 shell access”;这个测试成功时退出码也可能为 1,不要只凭退出码误判。[18][20]
clone、pull 与 push
clone:把远程仓库复制到本机。pull:获取并整合远程新提交。push:把本机提交发送到远程,需要写入权限。[16]
可以用一个小型公开示例练习只读操作,不需要运行其中的代码:
cd ~/projects
git clone https://github.com/octocat/Hello-World.git hello-world-reading
cd hello-world-reading
git pull --ff-only
克隆成功不表示你能向这个仓库推送。上传自己的练习时,先在 GitHub 创建一个空仓库,不要自动生成 README、License 或 .gitignore;然后回到自己刚才提交过的目录。替换下面的 YOUR_USER 和 YOUR_REPO 后再执行:[16]
cd ~/projects/git-practice
git remote add origin 'git@github.com:YOUR_USER/YOUR_REPO.git'
git remote -v
git push -u origin main
如果已有 origin,先查看地址,确认目标,不要重复添加或随意覆盖。不要向示例仓库 push,也不要为跳过认证使用明文凭据保存方法。GitHub 无法访问时,可以先完成本地提交;它不影响接下来学习 JavaScript。
7. 通关清单与常见问题
在 Ubuntu 终端运行:
node -v
npm -v
pnpm -v
git --version
command -v node
command -v npm
node -p 'process.platform'
node -e 'console.log("环境准备完成")'
可以继续下一课的标准:
- Ubuntu 为 24.04;WSL 路径的发行版运行在 WSL2。
- Node 为 22 系列且版本不低于 22.12,pnpm 为 10 系列。
- Node/npm 来自 Linux 家目录的 nvm,
process.platform输出linux。 - 主软件源和包 registry 已核对,安全更新源与签名检查仍保留。
- 本地 Git 练习已有提交;需要上传的同学已完成 SSH 验证。
常见问题可以按这个顺序处理:
- nvm 找不到:确认自己在 Ubuntu,重新加载 Bash 配置或
~/.nvm/nvm.sh。[9] - 下载失败:看报错、系统时间、网络与 CA 证书。下载到 HTML 错误页就停止,不要继续执行;不要关闭证书检查。Node/npm 镜像不能代替 GitHub 连通性。
- 全局安装权限不足:核对
command -v node、command -v npm与 npm prefix,先解决环境混用,不把所有命令改成 sudo。 - Git 提交失败:检查是否配置名字邮箱、是否已经 add、所在目录是不是自己的仓库;push 失败再查 SSH 身份、远程地址和权限。
完成后进入 JavaScript 第一课。现在只需要知道这些工具各自负责什么,不用提前理解后端框架或项目业务。
Sources
[1] https://learn.microsoft.com/en-us/windows/wsl/install — Install WSL | Microsoft Learn
[2] https://ubuntu.com/tutorials/install-ubuntu-desktop
[3] https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu — Ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
[4] https://github.com/nvm-sh/nvm
[6] https://learn.microsoft.com/en-us/windows/wsl/setup/environment — Set up a WSL development environment | Microsoft Learn
[7] https://releases.ubuntu.com/24.04 — Ubuntu 24.04.5.1 (Noble Numbat)
[8] https://knowledge.broadcom.com/external/article/368667/download-and-license-vmware-desktop-hype.html — Download and license VMware Desktop Hypervisor (Fusion Pro and Workstation Pro)
[9] https://github.com/nvm-sh/nvm/blob/v0.40.8/README.md — nvm/README.md at v0.40.8 · nvm-sh/nvm · GitHub
[11] https://npmmirror.com — npmmirror 镜像站
[12] https://pnpm.io/10.x/installation — Installation | pnpm
[13] https://docs.npmjs.com/cli/v10/commands/npm-config — npm-config | npm Docs
[14] https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup — Git - First-Time Git Setup
[15] https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository — Git - Recording Changes to the Repository
[16] https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes — Git - Working with Remotes
[17] https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent — Generating a new SSH key and adding it to the ssh-agent - GitHub Docs
[18] https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection — Testing your SSH connection - GitHub Docs
[19] https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account — Adding a new SSH key to your GitHub account - GitHub Docs
[20] https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints — GitHub’s SSH key fingerprints - GitHub Docs
[21] https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports — Ubuntu Ports | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
[26] https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh — nvm 官方仓库 v0.40.8 安装脚本原文
[34] https://nodejs.org/dist/index.tab — Node.js 官方版本索引
[35] https://npmmirror.com/mirrors/node/index.tab — npmmirror Node.js 版本索引
互动练习:确认你正在用哪套工具
在 Ubuntu 终端中,command -v npm 显示 /mnt/c/Program Files/nodejs/npm。继续课程前,应先做什么?
能在 Ubuntu 中使用个人目录下的 Node/npm/pnpm,安装 Git,并完成一次本地提交与工具验证。