Gemini CLI 代理问题解决[API Error: exception TypeError: fetch failed sending request]
Gemini CLI 安装与代理问题解决教程
在中国大陆环境下,Gemini CLI 安装和使用常常会遇到网络连接问题,出现如下报错:
[API Error: exception TypeError: fetch failed sending request]
通常这是因为无法直接访问 Google 的 API 服务器,ping 216.239.36.223 不通。这也是众所周知的网络原因。
解决方案:手动为 Gemini CLI 设置代理
Gemini CLI 默认不支持代理,但我们可以通过修改其主文件,强制走本地代理。
1. 找到 Gemini CLI 的主文件
- Windows:
C:\Users\你的用户名\AppData\Roaming\npm\node_modules\@google\gemini-cli\dist\index.js
- macOS (Homebrew 安装):
/opt/homebrew/lib/node_modules/@google/gemini-cli/dist/index.js
- Linux (全局 npm 安装):
/usr/local/lib/node_modules/@google/gemini-cli/dist/index.js
2. 安装 undici
依赖
在终端执行:
npm install -g undici
3. 修改 index.js 文件
在 index.js
文件的开头加入如下三行代码(放在所有 import
之后,更靠前越好):
import { setGlobalDispatcher, ProxyAgent } from "undici";
const dispatcher = new ProxyAgent({ uri: new URL('http://127.0.0.1:7890').toString() }); // 7890 是你本地代理端口,按需修改
setGlobalDispatcher(dispatcher);
请根据自己的代理软件实际端口填写。
4. 完整的 index.js 示例
修改后的入口文件示例(重点内容已高亮):
#!/usr/bin/env node
/*** @license* Copyright 2025 Google LLC* SPDX-License-Identifier: Apache-2.0*/
import './src/gemini.js';
import { main } from './src/gemini.js';// === 加入如下三行代码 ===
import { setGlobalDispatcher, ProxyAgent } from "undici";
const dispatcher = new ProxyAgent({ uri: new URL('http://127.0.0.1:7890').toString() }); // 端口务必对应你的代理端口
setGlobalDispatcher(dispatcher);
// =======================// --- Global Entry Point ---
main().catch((error) => {console.error('An unexpected critical error occurred:');if (error instanceof Error) {console.error(error.stack);}else {console.error(String(error));}process.exit(1);
});
//# sourceMappingURL=index.js.map
5. 保存并重新运行 Gemini CLI
此时你再运行 Gemini CLI,应该就可以正常联网了。
注意事项
- 升级 Gemini-CLI 后可能需要重新修改!
- 这种做法适用于大部分需要全局代理的 Node.js CLI 工具。
- 如果你用的是 PAC/全局模式,请确保端口和协议正确。
小结:通过为 Gemini CLI 强制设置 HTTP 代理,即可解决 “fetch failed” 的网络连通性问题,