这里写自定义目录标题
- 报错
- 问题的根本原因:
- [下载并安装 nvm (以 v0.40.1 为例)](#下载并安装 nvm (以 v0.40.1 为例))
- 让环境变量立即生效 (如果你用的是 zsh,请将 bashrc 换成 zshrc)
- [安装 Node 20](#安装 Node 20)
- [切换到 Node 20](#切换到 Node 20)
- [将 Node 20 设置为 WSL 默认的 Node 版本(每次打开终端自动使用)](#将 Node 20 设置为 WSL 默认的 Node 版本(每次打开终端自动使用))
- [下载并安装 nvm (以 v0.40.1 为例)](#下载并安装 nvm (以 v0.40.1 为例))
- 让环境变量立即生效 (如果你用的是 zsh,请将 bashrc 换成 zshrc)
报错
codex
file:///mnt/d/PFiles/nvm/v22.22.2/node_modules/@openai/codex/bin/codex.js:107
throw new Error(
^
Error: Missing optional dependency @openai/codex-linux-x64. Reinstall Codex: npm install -g @openai/codex@latest
at findCodexExecutable (file:///mnt/d/PFiles/nvm/v22.22.2/node_modules/@openai/codex/bin/codex.js:107:9)
at file:///mnt/d/PFiles/nvm/v22.22.2/node_modules/@openai/codex/bin/codex.js:112:20
at ModuleJob.run (node:internal/modules/esm/module_job:325:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:606:24)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5)
问题的根本原因:
WSL (Windows Subsystem for Linux) 有一个特性:默认会将 Windows 的系统环境变量(PATH)追加到 Linux 的 PATH 中。
因为你在 WSL 中没有配置自己的 Node.js,或者 WSL 的 Node 路径优先级不够高,导致你在 WSL 终端输入 codex 时,WSL 跨系统调用了你 D盘 Windows 版的 Node 和 npm 全局包。
Windows 版的 npm 安装时只会下载 Windows 的二进制依赖(windows-x64),但当这个脚本在 WSL 环境执行时,它检测到当前系统环境是 Linux,于是去寻找 Linux 的依赖包(linux-x64),自然找不到,从而报错。
要彻底解决这个问题,需要在 WSL 内部安装一个独立的 Linux 版 Node 环境,并确保 WSL 优先使用它。
下载并安装 nvm (以 v0.40.1 为例)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
让环境变量立即生效 (如果你用的是 zsh,请将 bashrc 换成 zshrc)
source ~/.bashrc
安装 Node 20
nvm install 20
切换到 Node 20
nvm use 20
将 Node 20 设置为 WSL 默认的 Node 版本(每次打开终端自动使用)
nvm alias default 20
下载并安装 nvm (以 v0.40.1 为例)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
让环境变量立即生效 (如果你用的是 zsh,请将 bashrc 换成 zshrc)
source ~/.bashrc