调用googlesheets4::gs4_auth传JSON路径触发段错误memory not mapped
问题成因
你遇到的段错误由两个核心原因导致:
- 版本不兼容:你使用的R 3.5.2(2018年发布)远低于
gargle 1.1.0要求的最低R 3.6版本,跨版本依赖不匹配触发了底层C代码的非法内存访问。 - GCE元数据检测触发底层curl错误:调用栈显示崩溃发生在
curl::curl_fetch_memory调用谷歌云引擎(GCE)元数据接口的环节,你使用的Debian 9自带的libcurl版本过旧,和R的curl包适配存在bug。
解决方案
按优先级尝试以下操作:
- 优先升级R版本到4.0及以上,之后执行以下命令更新所有关联依赖包:
install.packages(c("googlesheets4", "gargle", "curl", "httr")) - 若暂时无法升级R版本,可通过禁用GCE检测规避崩溃:在调用
gs4_auth()前先执行:
该配置会强制跳过GCE环境检测逻辑,避免触发curl的底层调用错误。Sys.setenv(GCE_METADATA_URL = "INVALID") - 升级系统curl依赖:执行以下系统命令更新libcurl库,之后重新编译安装R的curl包:
sudo apt update && sudo apt install libcurl4-openssl-devinstall.packages("curl", type = "source") - 验证身份文件有效性:确认
auth_jspath指向的JSON服务账号文件路径正确、文件有可读权限,且账号已被授予目标表格的访问权限,排除身份文件本身的问题。
内容的提问来源于stack exchange,提问作者Linh
相关产品推荐
相关产品推荐

