Mapbox 空白地图 React-map-gl | ReactJS

IT技术 javascript reactjs mapbox react-map-gl
2021-04-27 01:01:34

我正在使用 react 17.0.1 和 react-map-gl ^6.0.2 我有一个地图组件。

  1. 我尝试了其他库,但问题仍然存在
  2. 我已经联系了 mapbox 的支持
  3. 我已经联系了其他 mapbox 用户

解决不了

当我执行“npm run start”没问题时,它会显示地图但是当我执行“npm run build”时它只显示这个:地图空白

它抛出这个错误:错误

我的代码如下:

   import React, {useState } from "react";
import ReactMapGL from 'react-map-gl';
const Map = () => {
  const[viewport, setViewport] = useState({
    width: "100%",
    height: "400px",
    latitude: 38.963745,
    longitude: 35.243322,
    zoom: 5
  });
     return (
    <div>
      <h2>Size yakın olan yerleri keşfedin!</h2>
            <ReactMapGL
                 {...viewport}
              onViewportChange={setViewport}
              mapboxApiAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}
              mapStyle="mapbox://styles/mapbox/streets-v11"
           />
          </div>
           );
        }
     export default Map
4个回答

我知道这是一个旧帖子..

据我了解,原因是 mapbox (not react-map-gl) 中有一个错误,无法通过“npm build”正确转换。

幸运的是,您不必像我在此链接中了解到的那样弹出您的应用程序:https : //github.com/mapbox/mapbox-gl-js/issues/10173#issuecomment-753662795

我不得不 npm install worker-loader

然后添加以下几行。

    // had this.
    import ReactMapGL, { FlyToInterpolator, NavigationControl } from 'react-map-gl';    import 'mapbox-gl/dist/mapbox-gl.css';


    // added the following 6 lines.
    import mapboxgl from 'mapbox-gl';

    // The following is required to stop "npm build" from transpiling mapbox code.
    // notice the exclamation point in the import.
    // @ts-ignore
    // eslint-disable-next-line import/no-webpack-loader-syntax, import/no-unresolved
    mapboxgl.workerClass = require('worker-loader!mapbox-gl/dist/mapbox-gl-csp-worker').default;

由于我使用的是 typescript 和 linting,我不得不添加一些指令来忽略警告/错误,否则会阻止它编译。

请注意,我没有安装,mapboxgl因为react-map-gl使用它。

但是,我确实需要添加 eslint-disable-next-line import/no-unresolved

eslint-disable-next-line import/no-webpack-loader-syntax 合并在同一条线上。

我正在使用“react-map-gl”:“^6.1.17”。

在尝试部署应用程序时,首先我们运行 yarn build。这似乎完成了它的工作,没有构建错误。但是,当我们实际部署它时,例如为构建提供服务。我们遇到了“referenceError: y is not defined”。

将 Mapbox-gl 版本降级到 1.13.0 时。构建工作得很好。这是我们必须做的,直到问题得到解决。

以下步骤:

  • 运行 yarn install或 npm install
  • 运行 yarn build或 npm build

问题是由转译器引起的。这是 Mapbox 正在处理的一个错误。请遵循此处的建议:

https://github.com/mapbox/mapbox-gl-js/issues/10173

它现在也在官方文档中。

https://docs.mapbox.com/mapbox-gl-js/api/#transpiling-v2

仅以数字表示宽度和高度

const[viewport, setViewport] = useState({
    width: "100",
    height: "400",
    latitude: 38.963745,
    longitude: 35.243322,
    zoom: 5
});