我有 Vue SPA,我正在尝试迁移到 nuxt。我在包含在 <client-only>
标签中的组件中使用 vue2leaflet
标签,但仍然收到 nuxt 的错误消息 window is not defined
我知道我可以使用 nuxt-leaflet
或创建一个插件,但这会显着增加供应商捆绑包,我不希望这样。我只想为需要它的组件导入传单插件。有什么办法吗?
<client-only>
<map></map>
</client-only>
和 map
组件:
<template>
<div id="map-container">
<l-map
style="height: 80%; width: 100%"
:zoom="zoom"
:center="center"
@update:zoom="zoomUpdated"
@update:center="centerUpdated"
@update:bounds="boundsUpdated"
>
<l-tile-layer :url="url"></l-tile-layer>
</l-map>
</div>
</template>
<script>
import {
LMap,
LTileLayer,
LMarker,
LFeatureGroup,
LGeoJson,
LPolyline,
LPolygon,
LControlScale
} from 'vue2-leaflet';
import { Icon } from 'leaflet';
import 'leaflet/dist/leaflet.css';
// this part resolve an issue where the markers would not appear
delete Icon.Default.prototype._getIconUrl;
export default {
name: 'map',
components: {
LMap,
LTileLayer,
LMarker,
LFeatureGroup,
LGeoJson,
LPolyline,
LPolygon,
LControlScale
},
//...
原文由 yam 发布,翻译遵循 CC BY-SA 4.0 许可协议
我找到了一种可行的方法,但我不确定如何。在父组件中,将 import 语句移到组件声明中。