Antigravity BigInt 序列化错误修复指南
问题描述
现象: Antigravity 应用点击 "Sign in with Google" 后,浏览器端 OAuth 验证(Verify)成功,但本地 IDE / AI Studio / Console 毫无反应,登录流程卡住。
根本原因: Antigravity 在检查更新或保存认证状态时,调用了 JSON.stringify() 序列化包含 BigInt 类型的数据。JavaScript 原生的 JSON.stringify() 不支持 BigInt 序列化,导致抛出异常:
TypeError: Do not know how to serialize a BigInt at JSON.stringify
这个异常是静默崩溃------应用不会弹出任何错误提示,但会导致本地 OAuth 回调服务器(localhost)被终止。因此浏览器端验证虽然成功,回调信息却无法传回本地应用。
解决方案
在 Antigravity 的 main.js 文件开头添加 BigInt 序列化支持代码,让 JSON.stringify() 能正确处理 BigInt 类型。
步骤
1. 备份 main.js
打开终端(PowerShell / CMD),执行:
PowerShell:
powershell
copy "$env:LOCALAPPDATA\Programs\Antigravity\resources\app\out\main.js" "$env:LOCALAPPDATA\Programs\Antigravity\resources\app\out\main.js.bak"
CMD:
cmd
copy "%localappdata%\Programs\Antigravity\resources\app\out\main.js" "%localappdata%\Programs\Antigravity\resources\app\out\main.js.bak"
2. 编辑 main.js
用记事本打开文件:
cmd
notepad "%localappdata%\Programs\Antigravity\resources\app\out\main.js"
3. 添加补丁代码
将光标定位到文件最开头(第 1 行第 1 列),粘贴以下代码:
javascript
BigInt.prototype.toJSON = function() { return this.toString(); };
确保补丁代码与原有代码之间有空格或分号分隔。
4. 保存并重启
- 保存文件(Ctrl+S)
- 关闭 Antigravity 应用
- 重新启动 Antigravity
Linux (Arch) 用户
bash
# 备份
sudo cp /usr/lib/antigravity/out/main.js /usr/lib/antigravity/out/main.js.bak
# 编辑
sudo nano /usr/lib/antigravity/out/main.js
# 在文件最开头添加同样的补丁代码
原理说明
BigInt 是 JavaScript 中用于表示任意精度整数的类型。JSON.stringify() 默认不知道如何将 BigInt 转换为 JSON 值。通过给 BigInt.prototype 添加 toJSON 方法,告诉 JSON.stringify() 在遇到 BigInt 时调用 toString() 将其转为字符串,从而避免序列化异常。