javascript - import Vue from 'vue' 将 "different"Vue 导入不同的文件

标签 javascript npm vuejs2 webpack-2

这个问题可能更多地是关于 Webpack 和 ES6 import 而不是 Vue。

我正在编写一个 Vuex 突变,将新的 mykey: [] 添加到 state 中的对象。这需要使用Vue.set(state.myobj, 'mykey', []),让新数组获得 react 性。

但是,当我将 Vue 从 'vue' 导入到我的 mutations.js 并使用 Vue.set(...) 时,它并没有解决问题(它什么都不做)。问题似乎是 Vue 与我在 main.js 文件中创建 Vue 对象时在主 js 文件中使用的 Vue 不同。

我已经确认问题与 Vue 导入 mutations.js 的方式有关。如果我在 main.js 中编写 window.MY_VUE = Vue,然后在 mutations.js 中使用 window.MY_VUE.set(...),新数组将按预期工作,即当我推送到数组时,更改会正确反射(reflect)在 DOM 中。自然地,在 mutations.js 中比较 window.MY_VUE === Vue 返回 false。

我做错了什么吗?解决问题的正确方法是什么?

注意:作为解决方法,我现在替换对象:

state.myobj = { ...state.myobj, mykey: [] }

我正在使用 Vue 2.4.2、Vuex 2.4.0 和 Webpack 2.7.0。我没有使用 Webpack 代码拆分。

最佳答案

我找到了直接原因。我首先注意到加载应用程序时,“您正在以开发模式运行 Vue”。在控制台中打印了两次。它们都来自 vue.runtime.esm.js:7417,但来自不同的 url。 (Webpack url,因为我正在运行 npm run dev。)我注意到我有两个 node_modules 目录(在 ./. ./../),并且出于某种原因,Vue 从两个地方加载了一次。可能我以错误的顺序安装了 npm 包。删除 node_modules 目录并再次运行 npm install 解决了问题:现在我可以在 mutations.js 中 import Vue from 'vue',并且 Vue.set(...) 按预期工作。

无论如何,我仍然不完全了解实际的 npm 问题或如何不再这样做。

关于javascript - import Vue from 'vue' 将 "different"Vue 导入不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997484/

相关文章:

javascript - 重构基本的javascript

javascript - 在 Angular 应用程序的路由中的解析中创建 promise

javascript - 如何按正整数或负整数对数组进行排序

node.js - "npm install @azure/msal-browser @azure/msal-angular@latest"但node_modules 内没有任何内容

Angular Typescript - 排除在 tsconfig.json 中不起作用

javascript - Vue.js:对子元素使用 CSS 类

javascript - 使用 geoplugin 放置带有国家名称的 cookie

node.js - 使用 NVM 时找不到 NPM

javascript - 将动态 bool 属性传递给 VueJS 组件

javascript - 想要在使用 Vue.js 提交之前显示加载文本