React项目MapboxGL在Node.js生产环境失效,开发环境正常求助
问题:Mapbox地图本地正常,部署到远程服务器后无法显示
代码与配置
- 项目
index.js中的ReactMapGL组件代码片段:
<ReactMapGL ref={this.map} className={classes.root} {...viewport} width="100%" height="100%" scrollZoom={isExpanded ? true : false} touchAction={isExpanded ? 'pan' : 'pan-y'} mapStyle={this.getMapStyle(homicides)} interactiveLayerIds={["homicides"]} getCursor={this.getCursor} onClick={this.handleClick} mapboxApiAccessToken={process.env.REACT_APP_MAPBOX_API_ACCESS_TOKEN} onViewportChange={onViewportChange} >
.env文件配置:
REACT_APP_MAPBOX_API_ACCESS_TOKEN=pk.my-big-long-mapbox-api-token
现象差异
- 本地Arch Linux环境:执行
npm start,访问http://localhost:3000/,地图正常显示。 - 远程Arch Linux服务器:执行
npm run build构建项目,通过serve -s build启动服务,访问http://my-server-ip-address:3000时地图无法显示,浏览器控制台报错:
Uncaught Error: An API access token is required to use Mapbox GL. See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes at e.RequestManager._makeAPIURL (mapbox.js:214:23) at e.RequestManager.normalizeSourceURL (mapbox.js:104:21) at R (load_tilejson.js:38:71) at Se.load (vector_tile_source.js:110:33) at Se.onAdd (vector_tile_source.js:146:14) at Jt.addSource (style.js:753:50) at Jt._load (style.js:311:18) at style.js:278:18
已尝试的无效操作
- 执行
npm update更新依赖 - 将代码中的
{process.env.REACT_APP_MAPBOX_API_ACCESS_TOKEN}替换为实际API令牌字符串,本地npm start正常,但远程部署后问题依旧 - 尝试过StackOverflow上的相关解决方案,均未解决问题
补充排查信息
本地搭建nginx环境,部署build目录后访问http://localhost/my-project/build/,浏览器Network面板可看到Mapbox资源请求:https://api.mapbox.com/v4/mapbox.mapbox-streets-v7.json?secure&access_token=MAPBOX_API_ACCESS_TOKEN
但远程服务器部署后,访问http://my-server-ip-address/my-project/build,仅能看到一个Mapbox相关请求:https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js,无法看到地图资源的请求。
内容的提问来源于stack exchange,提问作者Generic_User_ID
相关产品推荐
相关产品推荐

