You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mapbox GL持续提示需API访问令牌:已配置.env仍无效

解决Mapbox GL "API access token is required" 报错问题

你遇到的核心问题是环境变量引用错误,导致Mapbox没有拿到有效的访问令牌,咱们一步步来修复:

1. 修正ERB中的环境变量引用

你的.env文件里定义的变量名是MAPBOX_API_KEY,但在html.erb脚本里你错误地把令牌本身当成了环境变量的键来读取,这肯定拿不到有效值:

错误代码:

<script>
const venues = <%= raw json_escape(@geojson.to_json) %>;
const mapkey = "<%= ENV['pk.eyJ1Ijoia3VtYXNhbsImEiOsafsaiJjanRxd2xvfashfuawbekfjzNGFwMmZlcG1pb3p4In0.F_-z1_nW2O3CYYNOHafafas6rC1A'] %>";
</script>

修正后代码:

<script>
const venues = <%= raw json_escape(@geojson.to_json) %>;
const mapkey = "<%= ENV['MAPBOX_API_KEY'] %>";
</script>

2. 验证环境变量是否正确加载

  • 确保.env文件放在Rails项目根目录,文件名无额外后缀(比如对应开发环境的.env.development要和当前运行环境匹配)
  • 如果你用dotenv-rails gem,必须重启Rails服务器才能让新的环境变量生效——这一步很容易被忽略!

3. 确认Mapbox初始化时正确传入令牌

在你的init_mapbox.js文件(错误栈第23行)中,要确保创建Map实例时正确传入令牌:

mapboxgl.accessToken = mapkey; // 确保这里用的是上面定义的mapkey变量
const map = new mapboxgl.Map({
  container: 'map',
  style: 'mapbox://styles/mapbox/streets-v12',
  // 其他地图配置项...
});

额外检查点

  • 可以在ERB中临时输出<%= ENV['MAPBOX_API_KEY'] %>,验证是否能正确打印令牌值,排除环境变量加载问题
  • 确认你的Mapbox令牌包含styles:read和tiles:read的权限范围

按照以上步骤调整后,地图应该就能正常加载了。

内容的提问来源于stack exchange,提问作者Yuki Mori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:32:22