通过CDN引入Vuex时,createStore未导出的问题求助
Vuex CDN引入错误的解决方法
问题根源
你用的vuex.global.js是Vuex的全局构建版本,这类文件是给传统<script>标签引入设计的,不支持ES模块的import语法,所以直接写import { createStore }肯定报错。另外,这个全局版本不会直接把createStore暴露到全局,而是把整个Vuex挂载到全局变量Vuex上,所以你直接调用createStore自然会提示未定义。
正确用法(全局构建版本)
- 用
<script>标签引入Vuex,不要用import:
<script src="https://unpkg.com/vuex@4.0.0/dist/vuex.global.js"></script>
- 通过
Vuex.createStore来创建store:
const store = Vuex.createStore({ state() { return { count: 0 } }, mutations: { increment(state) { state.count++ } } })
- 把store挂载到Vue应用上(以Vue3为例):
const app = Vue.createApp({ // 根组件内容 }) app.use(store) app.mount('#app')
想用ES模块import的话?
如果偏好ES模块语法,要换用Vuex的ES模块版本文件vuex.esm-browser.js,同时给脚本标签加上type="module":
<script type="module"> import { createStore } from "https://unpkg.com/vuex@4.0.0/dist/vuex.esm-browser.js" const store = createStore({ // store配置 }) const app = Vue.createApp({}) app.use(store) app.mount('#app') </script>
内容的提问来源于stack exchange,提问作者Page Russell
相关产品推荐
相关产品推荐

