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

React中Leaflet组件报错求助:Marker与Popup未定义

解决React-Leaflet中Marker和Popup未定义的报错

问题原因

你在代码中使用了Marker和Popup组件,但没有从react-leaflet库中导入它们,导致ESLint和TypeScript无法识别这两个组件,从而抛出未定义的错误。

修改后的完整代码

import React from "react";
// 补充导入Marker和Popup组件
import { MapContainer, TileLayer, Marker, Popup } from "react-leaflet";
import "./App.css";

function App() {
  return (
    // 注意:Tailwind CSS中自定义像素高度需用方括号包裹,h-180px不是合法类名
    <div id="map" className="h-[180px]">
      <MapContainer center={[51.505, -0.09]} zoom={13} scrollWheelZoom={false}>
        <TileLayer
          attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        />
        <Marker position={[51.505, -0.09]}>
          <Popup>
            A pretty CSS3 popup. <br /> Easily customizable.
          </Popup>
        </Marker>
      </MapContainer>
    </div>
  );
}

export default App;

额外提示

  1. Tailwind CSS类名规范:自定义像素高度必须用方括号包裹(如h-[180px]),否则样式不会生效。
  2. 确保依赖安装完整:若未安装相关依赖,执行以下命令补充:
npm install leaflet react-leaflet
npm install -D @types/leaflet # TypeScript类型声明依赖

内容的提问来源于stack exchange,提问作者poshan baral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:30:49