javascript - 在create-react-app中使用react-map-gl时出错

标签 javascript reactjs webpack mapbox-gl-js create-react-app

构建一个简单的应用程序来试用 Uber React Map GL使用 super 简单Create React App设置。这是我所拥有的简化设置:

import React, { Component } from 'react'
import MapGL from 'react-map-gl'

class Home extends Component {
  render() {
    return (
      <MapGL
        width={400}
        height={400}
        latitude={37.7577}
        longitude={-122.4376}
        zoom={8}
        mapStyle="mapbox://styles/mapbox/dark-v9"
      />
  }
}

这会导致错误:

Uncaught TypeError: Cannot convert undefined or null to object
  at Function.keys (<anonymous>)
  at new module.exports (index.js:9)
  at Object.<anonymous> (web_worker.js:5)
  at __webpack_require__ (bootstrap e5da5fb…:555)
  at fn (bootstrap e5da5fb…:86)
  at Object.<anonymous> (worker_pool.js:4)
  at __webpack_require__ (bootstrap e5da5fb…:555)
  at fn (bootstrap e5da5fb…:86)
  at Object.<anonymous> (global_worker_pool.js:2)
  at __webpack_require__ (bootstrap e5da5fb…:555)

看看 Uber 的 example app using webpack我注意到他们正在使用 transform-loader?brfs-babel 加载器来加载 mapbox-gl.js 文件。

使用 Create React App,您无法访问 webpack 配置,因为它包含在另一个包中,因此唯一的选择似乎是运行 npm runject 来提取依赖项和 webpack 配置进入项目。

弹出是唯一的选择吗?或者我是否缺少在标准 create-react-app 安装中执行此操作的方法?

最佳答案

为了开发,添加mapboxApiAccessToken属性。

如果您使用的是 CRA,则在 .env 文件中的生产环境中设置 REACT_APP_MAPBOX_ACCESS_TOKEN 环境变量。 mapboxApiAccessToken={'process.env.REACT_APP_MAPBOX_ACCESS_TOKEN'}/>

<MapGL
        width={400}
        height={400}
        latitude={37.7577}
        longitude={-122.4376}
        zoom={8}
        mapStyle="mapbox://styles/mapbox/dark-v9"
        mapboxApiAccessToken={'your-access-toekn-goes-here'}/>

关于javascript - 在create-react-app中使用react-map-gl时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43353042/

相关文章:

javascript - Bootstrap 导航栏,全高导航栏折叠但带有奇怪的动画

javascript - react native : You attempted to set the key on an object that is meant to be immutable and has been frozen

css - Next.js 全局 CSS 接管了 module.css

css - 我怎样才能抓取一堆 scss 文件并为所有应用程序制作一个 css 文件

javascript - TypeError 对话框不是一个函数

javascript - 是否有像 BackboneJS 那样将代码包装到自执行匿名函数中的 grunt 插件?

javascript - 使用 Hooks 替换而不是 concat 更新 React 上的数组状态

javascript - 如何定义 webpack 中 loader 的优先级?

javascript - 排除node_modules但包含一个文件夹

Javascript "for"循环函数序列