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

Vue3使用leaflet-draw提示Leaflet版本不匹配问题求助

问题根源

你项目中安装的leaflet-css@0.1.0包内部固定依赖Leaflet 0.6.4版本,leaflet-draw加载时优先读取到了这个旧版本的Leaflet实例,所以出现版本校验不匹配的报错。同时Leaflet 1.x版本本身已经内置了样式文件,完全不需要单独安装leaflet-css依赖,额外安装反而会造成版本冲突。

解决方案

按以下步骤操作即可解决:

  1. 卸载冲突依赖
    执行命令删除多余的leaflet-css包:
npm uninstall leaflet-css

删除完成后清空node_modules和包管理工具缓存,重新安装所有依赖。

  1. 配置打包别名锁定Leaflet版本
    在项目根目录的vue.config.js中添加如下配置,强制所有依赖加载你安装的1.7.1版本Leaflet,避免leaflet-draw调用自身内部嵌套的旧版本:
const path = require('path')
module.exports = {
  configureWebpack: {
    resolve: {
      alias: {
        'leaflet': path.resolve(__dirname, 'node_modules/leaflet')
      }
    }
  }
}
  1. 调整组件内引入方式
    修改单文件组件的引入逻辑,正确引入Leaflet、leaflet-draw及对应的样式文件:
<template>
    <div class="h-full flex-1" id="main-map"></div>
</template>

<script>
import L from 'leaflet'
// 将Leaflet实例挂载到全局,供leaflet-draw读取
window.L = L
// 引入leaflet-draw
import 'leaflet-draw'
// 引入必要样式
import 'leaflet/dist/leaflet.css'
import 'leaflet-draw/dist/leaflet.draw.css'
import { onMounted } from '@vue/runtime-core'
import DRAW_OPTIONS from './data/drawingOptions'


export default {
    setup() {
        onMounted(() => {
            let mymap = L.map('main-map').setView([51.505, -0.09], 10);
            L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
                attribution: 'attribution-here',
                maxZoom: 18,
                id: 'mapbox/streets-v11',
                tileSize: 512,
                zoomOffset: -1,
                accessToken: 'access-token-here'
            }).addTo(mymap);

            var drawControl = new L.Control.Draw(DRAW_OPTIONS)
            mymap.addControl(drawControl);              
        })

        return {
        }
    }
}
</script>
  1. 重启开发服务
    配置完成后重启Vue开发服务,即可正常加载绘图控件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:45:04