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” 的网络连通性问题,
更多推荐
所有评论(0)