首先,我是 NuxtJS 和一般前端开发的初学者,所以可能是我遗漏了一些东西——尽管我相信我在发帖之前已经通过了所有选项。如果不是这样,请提前道歉。
mapbox-sdk
.
使用
npm install @mapbox/mapbox-sdk
安装后,在@mapbox/mapbox-sdk
中正确创建node_modules
,我在nuxt.config.js
中注册它:
plugins: [
...
"~/plugins/mapbox-sdk.js",
],
当然,我也在
mapbox-sdk.js
中创建了plugins/
文件,包含:
import "@mapbox/mapbox-sdk";
然后,在页面中(例如,
myMap.vue
),当我尝试:
var mapboxClient = mapboxSdk({ accessToken: MY_ACCESS_TOKEN });
这是文档中的基本用法示例,我得到:
mapboxSdk is not defined
在控制台中。此行为扩展到我今天安装的每个模块,但我以前安装的模块不是这种情况。
你得到错误
mapboxSdk is not defined
的原因是因为你设置这个插件的方式有一些问题。
文档在这里https://nuxtjs.org/docs/2.x/directory-structure/plugins/,他们有一些有用的图表。
有几种方法可以使用这个包。
// ~/plugins/mapbox-sdk.js
import mapboxSdk from '@mapbox/mapbox-sdk'
export default (_ctx, inject) => {
// Exposing the mapboxSdk to your Nuxt app as $mapBox.
inject('mapBox', mapboxSdk)
}
然后在
nuxt.config.js
,和你已经做的一样。
plugins: [
...
"~/plugins/mapbox-sdk.js",
],
然后在你的组件中
myMap.vue
var mapboxClient = this.$mapBox({ accessToken: MY_ACCESS_TOKEN });
如果您不想使用插件,@kissu 上面提到的方式 https://stackoverflow.com/a/67421094/12205549 也可以。