
在 VS Code 里把前端项目文件夹拖进来按下 Ctrl打开集成终端输入 npm install 没问题紧接着 npm run dev 却报Missing script: dev或者卡在npm ERR! code ERESOLVE又或者 dev server 起来后浏览器一片空白。这种局面通常不是项目本身坏了而是 Node 版本、npm registry、依赖入口和 VS Code 终端环境叠在一起。先把 [TaoToken](https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content) 的 API Key 建好再把 Codex 的~/.codex/config.toml里 Base URL 填成https://taotoken.net/api让 Codex 只做一件事根据你贴过去的终端报错、node -v/npm -v输出和package.json 片段按原文的 VS Code 前端环境步骤给出排查顺序。命令仍然由你在本地 VS Code 终端执行Codex 不替你连机器跑业务操作。1. VS Code 里 npm run dev 报错时先别重装 Node1.1 node -v 和 npm -v 的输出要原样保存如果你还没装 VS Code先去官网下载安装包安装时 Windows 记得勾选添加到 PATHmacOS 把应用拖进 Applications 即可。接着装 Node 16.18原文走的是这个版本但你要先确认项目是不是真的要求 16.18。装完不要立刻在旧终端里敲命令VS Code 的集成终端可能还继承着安装前的 PATH关掉重新开一个再执行node -v和npm -v。把下面几行输出完整复制到一个临时文本里等会儿贴给 Codex 排查时比截图有用node -v npm -v which node which npmWindows PowerShell 换成node -v npm -v Get-Command node Get-Command npm如果node -v输出v16.18.x说明 Node 16.18 至少已经能被终端找到如果提示不是内部或外部命令先别怀疑项目去检查安装路径和 PATH。npm -v一般会跟着 Node 一起出现Node 16.18 常见搭配是 npm 8.x但具体小版本不用死磕关键是它能不能正常解析依赖。把命令提示符所在目录也记下来很多人是在错误的文件夹里执行npm install结果依赖装到了上一层或子目录。1.2 从 package.json 确认 scripts、engines 和依赖入口npm run dev这个命令不是天然存在的它只是让 npm 去package.json的scripts字段里找名为dev的脚本。如果项目里只有start、serve或build你敲npm run dev当然会报Missing script: dev。所以排障第一步不是重装依赖而是打开项目根目录的package.json看清楚三件事有没有scripts.devengines.node要求什么版本依赖入口指向哪个文件。一个典型前端项目的片段长这样{ name: vscode-frontend-demo, scripts: { dev: vite, build: vite build, preview: vite preview }, engines: { node: 16.18.0 }, devDependencies: { vite: ^4.0.0 } }如果engines.node写的是18而你在 Node 16.18 下硬跑报错可能五花八门例如语法不支持、依赖安装失败、dev server 启动后马上退出。这个时候要么用 nvm、fnm 切到项目要求的版本要么找项目维护者确认能否降级依赖。反过来如果项目确实要求 Node 16.18那你就把node -v的输出留好后面让 Codex 对照package.json判断版本是否匹配。别把package.json全量贴出去只贴scripts、engines、devDependencies和入口相关字段就够。2. 把 Codex 的 config.toml 指到 TaoTokenBase URL 填到 /api 为止2.1 在 TaoToken 创建 Key并去模型广场确认模型 IDCodex 要帮你读报错、解释package.json、给排查命令得先有一条能用的模型通道。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 注册并登录在控制台里创建 API Key复制出来先记成YOUR_API_KEY。不要直接把 Key 写进文章、截图或提交到 Git后面用环境变量或本地配置文件承接。模型 ID 不要凭记忆猜也不要看旧教程抄一个带日期后缀的名字去模型广场看当时的列表复制你要用的模型 ID。这里要区分两个地址给人点的官网落地页是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content用来注册、创建 Key、看模型广场和用量填进 Codex 的接口 Base URL 是https://taotoken.net/api末尾不要加/v1也不要带任何 UTM 参数。把这两个地址混用是后面 404 和鉴权失败的常见来源。TaoToken 在这里负责提供统一 API 入口Codex 负责根据你的本地报错做解释和步骤编排。2.2 ~/.codex/config.toml 里写 model_provider 和 base_urlCodex 的配置文件通常在用户目录下的.codex/config.toml。Windows 一般是C:\Users\你的用户名\.codex\config.tomlmacOS 和 Linux 通常是~/.codex/config.toml。没有这个文件就新建注意不要写成config.json也不要放到项目根目录里。下面是一份最小可用思路模型 ID 换成你从模型广场复制的那一个model YOUR_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chatmodel_provider taotoken要和[model_providers.taotoken]这一段同名否则 Codex 找不到供应商。base_url只写到https://taotoken.net/api不要自己补/v1也不要写成官网落地页。env_key表示 Codex 会去读名为TAOTOKEN_API_KEY的环境变量所以下一步要确保这个变量在你启动 Codex 的终端里存在。2.3 环境变量或 auth.json只让 Key 参与认证Windows PowerShell 可以这样临时设置再设置一次用户级变量避免每次开终端都重来$env:TAOTOKEN_API_KEYYOUR_API_KEY [Environment]::SetEnvironmentVariable(TAOTOKEN_API_KEY,YOUR_API_KEY,User)macOS 和 Linux 用export TAOTOKEN_API_KEYYOUR_API_KEY echo export TAOTOKEN_API_KEYYOUR_API_KEY ~/.zshrc设置完关掉 VS Code重新打开让集成终端读到新环境变量。用echo $env:TAOTOKEN_API_KEY或echo $TAOTOKEN_API_KEY检查输出是不是你的真实 Key。部分 Codex 版本会用~/.codex/auth.json保存凭据原则很简单Key 放认证文件里Base URL 仍然留在config.toml不要把https://taotoken.net/api写进auth.json也不要给 Key 加多余空格或引号。配置保存后启动 Codex先让它读当前目录的package.json只列scripts和engines不要改文件。如果这一步报 401先看YOUR_API_KEY是不是没替换如果报 404 或 model not found先看base_url是不是被加了/v1以及模型 ID 是否从模型广场复制完整。3. 用 Codex 对照报错排查 npm install 慢、依赖装不上和 dev server 起不来3.1 把 VS Code 终端输出、node/npm 版本、package.json 片段贴给 CodexCodex 看不到你的 VS Code 终端也不会主动连你的本地机器。它只能根据你贴过去的文本推理。所以你要把三类信息一起给它第一node -v和npm -v的完整输出第二项目根目录package.json里的scripts、engines、devDependencies和入口字段第三npm install或npm run dev的完整报错从第一行到最后一行别只截最后一句。下面这段可以当模板我在 VS Code 集成终端执行前端项目命令卡在 npm run dev。 系统Windows/macOS/Linux node -v... npm -v... package.json 片段 ... npm install 输出 ... npm run dev 输出 ... 请按以下顺序排查 1. Node 版本是否满足 package.json engines 2. npm registry 是否过慢或依赖解析失败 3. scripts 里是否有 dev入口文件是否存在 4. dev server 端口是否被占用Live Server 配置是否正确。 只给排查步骤和可执行命令命令由我在本地 VS Code 终端执行。这样写的好处是Codex 不会上来就让你删node_modules。它更有机会先问engines要求 18 还是 16.18scripts.dev到底存不存在报错里是ERESOLVE还是EACCES。你拿到它给的命令后仍然在 VS Code 集成终端里逐条执行再把新的输出贴回去形成“本地执行、对话解释”的闭环。3.2 Node 16.18 与 registry先判断项目要求再决定切版本或换源Node 16.18 是原文里的安装版本但前端项目对 Node 版本很敏感。先看package.json的engines再看锁文件是package-lock.json、pnpm-lock.yaml还是yarn.lock。如果项目要求 Node 18 或 20你继续用 16.18 只会让 Codex 陪你绕圈。切换版本优先用版本管理器不要手工删系统 Node 目录。装好新版本后在 VS Code 新终端里重新node -v确认版本已经切过去。registry 慢和依赖装不上是另一类问题。先在终端里看当前 registrynpm config get registry npm install --verbose npm cache verify如果npm install长时间停在sill fetch或timing把 verbose 输出交给 Codex让它判断是网络慢、registry 不可达还是某个包版本冲突。这里要提醒一句npm registry 是装前端依赖的源https://taotoken.net/api是 Codex 调用模型的 Base URL两者不是一回事。不要为了修npm install去改config.toml里的base_url也不要把 registry 地址填到 Codex 配置里。排障时把变量分开后面才不会越修越乱。3.3 npm run dev 缺失、端口占用和 Live Server 配置错误如果 Codex 看完package.json后告诉你根本没有dev脚本先执行npm run列出所有可用脚本。可能项目用的是npm run serve、npm run start也可能它压根不是靠 npm dev server而是静态 HTML 加 Live Server。静态页面在 VS Code 里安装 Live Server 扩展后右键index.html选择 Open with Live Server 即可。它和npm run dev的差别是Live Server 只提供静态文件服务不执行打包器的热更新和模块解析。如果 Live Server 打开后 404检查.vscode/settings.json里的 root 和 port{ liveServer.settings.port: 5501, liveServer.settings.root: /src }如果npm run dev报端口被占用Windows 可以用netstat -ano | findstr 5173找到进程macOS 和 Linux 用lsof -i :5173。把占用端口的进程关掉或者按项目文档换端口例如 Vite 的--port 5174。这些命令也由你在本地终端执行把结果贴回 Codex让它继续判断是端口冲突还是 dev server 启动参数问题。不要写成让 Codex 直接连你的机器执行它只负责解释和给步骤。4. Codex 配置通了之后回 TaoToken 控制台核对这次调用4.1 用同一把 Key 在模型对话里发一条测试消息Codex 能读package.json之后先别急着让它分析全部报错。打开 TaoToken 模型对话用同一把 Key 发一条短消息比如“请用一句话说明 package.json 的 scripts 字段有什么用”。这一步能确认三件事Key 是否有效、模型 ID 是否可用、Base URL 通道是否正常。如果模型对话通、Codex 不通重点查~/.codex/config.toml里的model_provider名称、env_key和base_url如果 Codex 通、模型对话不通可能是你两边选了不同模型或者 Key 复制时少了字符。验证时不要一次改多个地方。先只改一个变量保存重开终端再测。Codex 配置最容易错的地方不是 Key而是把官网落地页和接口地址混在一起https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content是给人打开注册、创建 Key、看模型广场的https://taotoken.net/api才是填进config.toml的 Base URL。两者不要互相替换。4.2 看用量、换模型或升级套餐时别改错 Base URL前端项目跑起来后回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 控制台看一下这把 Key 的调用记录和用量确认刚才让 Codex 读package.json、分析 npm 报错时确实走了你创建的通道。换模型时只改config.toml里的model YOUR_MODEL_ID模型 ID 仍然以模型广场当时列表为准不要改base_url https://taotoken.net/api。如果你要长期在多个前端项目里用 Codex 做排障可以打开 Coding Plan 看套餐是否够用新 Key 在 控制台 API Keys 创建。若你同时用 Claude Code也可以对照 Claude Code 接入文档 把它指到同一条通道。页面在 Live Server 里正常打开、npm run dev也能稳定跑之后再回到 Codex 对话里让它把这次的排查步骤整理成一份项目内的 TROUBLESHOOTING.md下次换电脑或换同事接手时就不必从node -v重新猜起。