1. 为什么/api/gdp.json在 Vue3 里总是取不到数据你在 VS Code 里用 Five Server 把mockData目录跑成了http://127.0.0.1:5555的静态服务浏览器直接打开http://127.0.0.1:5555/gdp.json能看到 JSON说明数据服务本身没问题。接着你在vite.config.js里写了/api代理target指向http://127.0.0.1:5555/mockDatarewrite把/api前缀去掉然后在app.vue里fetch(/api/gdp.json)结果页面空白、控制台报 404 或者返回 HTML。原文到这里只留下一句「这样就生效了」没有任何排障路径这正是大多数人卡住的地方。这个问题的本质是Vite 的 dev server 代理只在开发服务器进程内生效它把浏览器发来的/api/gdp.json转发到target指定的地址再按rewrite改写路径。只要target端口、rewrite正则、Five Server 实际监听端口三者有一个对不上请求就会 404 或拿到错误内容。而 Five Server 默认端口不一定是 5555mockData是否作为根路径也会影响target该不该带/mockData。这些细节靠肉眼翻文档很难一次配对所以我更推荐把「代理配置 Network 返回状态」一起交给 Codex 逐条比对让它帮你定位是哪一环错位。TaoToken 在这里只负责提供 Key 和 Base URL不替你做代理、也不碰你的vite.config.js真正干活的是 Codex 的排查对话。这篇适合正在用 Vue3 Vite 做前端、用 VS Code 插件模拟接口数据、被/api代理 404 卡住的同学。下面按「先拿 Key → 配 Codex → 贴配置排障 → 验证渲染」的顺序走一遍。2. 前置注册 TaoToken 并创建一把 KeyCodex 需要一个可用的模型入口这里用 TaoToken 来供 Key 和 Base URL。打开官网注册账号https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册登录后进入控制台创建 API Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite在 API Keys 页面点新建复制生成的 Key形如sk-...先存到本地环境变量里别硬编码进前端代码# macOS / Linux export TAOTOKEN_API_KEYsk-你的key # Windows PowerShell $env:TAOTOKEN_API_KEYsk-你的keyBase URL 填这个注意不带/v1、不加任何 UTM 参数https://taotoken.net/apiKey 管理页在这里后面如果 Key 泄露或额度用完回来重新生成即可https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite注意TaoToken 只提供 Key 和 Base URL它不会帮你改vite.config.js也不会替你启动 Five Server。代理能不能通取决于你贴给 Codex 的配置和实际端口是否一致。3. 把 Codex 接到 TaoToken 并让它读你的代理配置Codex 的配置方式取决于你用的是 CLI 还是 IDE 插件核心就是把 Base URL 指向https://taotoken.net/api把 Key 用环境变量注入。以 CLI 为例配置文件通常放在~/.codex/config.toml或项目内.codex/config.toml# ~/.codex/config.toml model gpt-5-codex model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api responses如果你用的是 Anthropic 风格的接入比如 Claude Code 那套Base URL 同样填https://taotoken.net/apiKey 走环境变量。相关文档在这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite配好后先跑一次最小验证确认 Codex 能正常对话codex 用一句话说明 Vite dev server 的 proxy 是在哪个进程里生效的能正常返回说明 Key 和 Base URL 通了。接下来才是重点把下面三样东西一起贴给 Codex让它逐条对照。第一样你的vite.config.js代理段// vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue export default defineConfig({ plugins: [vue()], server: { proxy: { /api: { target: http://127.0.0.1:5555/mockData, changeOrigin: true, rewrite: (path) path.replace(/^\/api/, ), }, }, }, })第二样Five Server 实际监听的端口和根目录。打开 VS Code 的 Five Server 输出面板或看它启动时弹出的地址确认到底是5555还是5500以及mockData是不是被当成了根。如果 Five Server 的根就是mockData那target应该写成http://127.0.0.1:5555而不是带/mockData。第三样浏览器 Network 里/api/gdp.json的返回状态码和响应体。是 404、200 但返回 HTML、还是 CORS 报错这三种对应完全不同的修法。把这三样贴给 Codex让它输出一份「端口 / 前缀 / rewrite 是否对得上」的对照结论。这一步才是真正消耗 Token 的地方也是它比你自己翻文档快的原因。4. 可复制配置让代理和 Five Server 对齐假设 Codex 对照后确认 Five Server 实际跑在5555且mockData是它的根目录那么target不该再带/mockData否则转发地址会变成http://127.0.0.1:5555/mockData/gdp.json而实际文件在http://127.0.0.1:5555/gdp.json自然 404。修正后的配置// vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue export default defineConfig({ plugins: [vue()], server: { proxy: { /api: { target: http://127.0.0.1:5555, changeOrigin: true, rewrite: (path) path.replace(/^\/api/, ), }, }, }, })如果 Five Server 的根是项目根目录、mockData是子目录那target才需要带/mockDatatarget: http://127.0.0.1:5555/mockData,changeOrigin: true建议保留它会把转发请求的 Host 头改成目标地址避免某些静态服务因 Host 不匹配拒绝响应。rewrite的正则/^\/api/只替换开头的/api/api/gdp.json会变成/gdp.json这是对的但如果你写成/\/api/g全局替换路径里其他位置的api也会被误伤。app.vue里的请求保持原样即可template div p v-ifloading加载中.../p ul v-else li v-for(item, i) in gdp :keyi{{ item }}/li /ul /div /template script import { ref } from vue export default { setup() { const gdp ref([]) const loading ref(true) async function fetchGdp() { try { const resp await fetch(/api/gdp.json) if (!resp.ok) { throw new Error(HTTP ${resp.status}) } gdp.value await resp.json() } catch (e) { console.error(fetch gdp 失败:, e) } finally { loading.value false } } fetchGdp() return { gdp, loading } }, } /script这里加了resp.ok判断和try/catch比原文裸fetch更容易看出是 404 还是解析失败。改完vite.config.js必须重启 dev server代理配置不会热更新。5. 验证请求确认 gdp 数组真的渲染到页面重启 Vitenpm run dev打开浏览器按 F12 进 Network刷新页面找/api/gdp.json这条请求。正常情况应该是检查项期望结果异常含义请求 URLhttp://localhost:5173/api/gdp.json说明请求发给了 Vite dev server状态码200404 说明 target/rewrite 错位响应类型application/json返回text/html说明打到了 Vite 自身响应体gdp 数组空数组说明文件路径不对如果状态码 200 但响应体是 Vite 的index.html说明代理没命中请求被 Vite 的 SPA fallback 接走了通常是proxy键名或层级写错。如果 404把 Network 里的完整请求 URL 和vite.config.js一起再贴给 Codex让它算一遍转发后的实际地址。页面侧确认gdp数组渲染出来v-ifloading消失、列表出现就说明整条链路通了。这一步的验证成本很低但能直接区分「代理没通」和「数据拿到了但渲染有问题」。6. 本篇常见错排查端口对不上Five Server 默认端口可能是5500你写5555就永远连不上。看 Five Server 输出面板的实际地址或直接在浏览器打开http://127.0.0.1:5555/gdp.json确认能访问再配代理。target 多带或少带/mockData这是最高频的坑。判断方法很简单——浏览器直接访问target rewrite 后的路径能拿到 JSON 就说明 target 对了。比如 target 是http://127.0.0.1:5555/mockData那就访问http://127.0.0.1:5555/mockData/gdp.json。改了配置没重启vite.config.js的server.proxy改动必须重启 dev server热更新不生效。很多人改完刷新页面还是 404就是没重启。rewrite 正则写错/^\/api/只替换开头/\/api/g会全局替换。如果你的接口路径里还有别的api段全局替换会把它们也删掉。请求发到了生产域名检查fetch用的是相对路径/api/gdp.json不是绝对路径http://xxx/api/gdp.json否则代理不生效。CORS 报错如果 Five Server 没开 CORS 且代理没生效浏览器会拦。代理生效后请求是同源的不会再有 CORS 问题。把上面这些现象连同 Network 截图一起丢给 Codex让它按「端口 → target → rewrite → 重启」的顺序逐条排除比你自己反复换插件试要快得多。如果排查过程中需要确认模型侧的行为可以直接在模型对话里问https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite长期做前端编码、想让 Codex 持续参与这类配置排查的可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite接入文档和 API Keys 管理分别在这里排障时按需取用https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_campaignrewrite最后补一个我踩过的坑Five Server 和 Live Server 同时装着的时候右键菜单可能只显示其中一个别以为是插件坏了去扩展面板禁用另一个再右键。代理配通之后gdp.json换成任何 mock 文件都一样能取这套排查路径可以复用。
企业数字化 ERP 产品动态
相关推荐
放弃Notion自建开源知识库:从选型到Docker部署的完整实践指南 作为一个在团队协作工具里摸爬滚打多年的老运维,我对 Notion 的感情很复杂:功能确实好用,but 那个订阅价格,尤其是团队规模上来之后,每年算总账的时候真的肉疼。后来我盯上了开源知识库这条路线,尤其是那个… · 2026/9/21 0:33:25
X光安检YOLO数据集:5000真实图像+三格式标签 简介:本资源是面向计算机视觉初学者与YOLO目标检测实践者的X光安检场景专用数据集,解决真实工业场景下小目标、重叠物体、低对比度图像的检测建模难题。数据集包含5000张高质量X光安检实景图片,配套VOC(XML)、COCO&… · 2026/9/21 0:33:25
AI编程实战指南:从工具选型到项目落地的完整方法论 我最早用AI编程的时候,心态是"把需求丢进去,代码自己滚出来"。结果呢?生成得像模像样,一跑就报错,改了三轮又引入新问题,最后反而比手写还慢。后来我换了个思路:把AI当成一个执行力很… · 2026/9/21 0:32:25
通达信指标公式编写指南:从入门到打造自己的选股器 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:12:52
AI真正接管数据治理的四大关键战场与实操门槛 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:12:52
特种机器人PPT课件制作指南:从分类框架到技术讲解的完整思路 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:10:52
产品管理系统选型指南:能力模型评分与避坑实操 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:10:52
Spring注解开发与Mybatis整合:从原理到实践,彻底搞懂IoC与事务管理 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:10:52
微信支付服务商模式openid归属校验实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:09:51
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化 直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39
Word表格编号全攻略:从列表编号到题注交叉引用 写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39
从第一个站到第二个站:独立开发者的静态网站选型与落地实践 1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18