ruby-on-rails - 无法在 Webpacker 中的 vuex 突变测试中导入 vue.esm.js

标签 ruby-on-rails vue.js tdd vuex webpacker

我将 Webpacker 与 this approach 一起使用(要求我导入 vue.esm.js)。我想按照 testing vuex docs 中的描述测试我的 vuex 突变.它在我使用 import Vue from 'vue' 时有效,但在我使用 import Vue from 'vue/dist/vue.esm' 时无效。但是,如果我不在我的商店中使用 vue.esm,我的 Webpacker Vue 应用程序就会崩溃。

这是我的商店:

// store.js
import Vue from 'vue/dist/vue.esm' // changing this to import from 'vue' works
import Vuex from 'vuex'
Vue.use(Vuex)

const state = {
  count: 0
}

// export `mutations` as a named export
export const mutations = {
  increment: state => state.count++
}

export default new Vuex.Store({
  state,
  mutations
})

这是我的测试:

import { mutations } from './store'

// destructure assign `mutations`
const { increment } = mutations

describe('mutations', () => {
  it('INCREMENT', () => {
    // mock state
    const state = { count: 0 }
    // apply mutation
    increment(state)
    // assert result
    expect(state.count).toBe(1)
  })
})

以上测试输出:

 FAIL  app/javascript/test/unit/specs/mutations.spec.js
  ● Test suite failed to run

    myproject/node_modules/vue/dist/vue.esm.js:10671
    export default Vue$3;
    ^^^^^^

    SyntaxError: Unexpected token export

我做错了什么?

最佳答案

不确定您是否解决了这个问题,但我遇到了同样的问题。 对我有用的是使用“vue”的别名。 与此处相同:https://github.com/rails/webpacker/blob/master/docs/webpack.md#configuration

// custom.js
const vueFile = process.env.NODE_ENV === 'production' ? 'vue/dist/vue.min.js' : 'vue/dist/vue.js';
module.exports = {
  resolve: {
    alias: {
      vue: vueFile,
      vue_resource: 'vue-resource/dist/vue-resource',
    },
  },
};

// environment.js
const { environment } = require('@rails/webpacker');
const customConfig = require('./custom');
const vue = require('./loaders/vue');

environment.config.merge(customConfig);
environment.loaders.append('vue', vue);

module.exports = environment;

然后更新我的商店和应用程序 JS 中的导入(import Vue from 'vue';),我们就完成了!

关于ruby-on-rails - 无法在 Webpacker 中的 vuex 突变测试中导入 vue.esm.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47837971/

相关文章:

css - Bootstrap CSS btn-block 类无法与 Rails 一起使用提交按钮

vue.js - Vitest 与 Quasar 的集成

javascript - 找不到模块 : Error: Can't resolve vue, 路径不正确

javascript - 在vue中显示来自rapidapi的API数据

asp.net-mvc - TDD - 在 ASP.NET MVC 中测试业务规则/验证

ruby-on-rails - 有没有办法将 ActiveRecord 对象导出到 seeds.rb?

ruby-on-rails - Ruby:无法在 Ubuntu 14.04 上将 gem 从 1.8.23 升级到 1.9.1

Go:属性存在但 Go 编译器说它不存在?

ruby-on-rails - <%== %> 在 Rails erb 中做什么?

tdd - NMock2.0 - 如何 stub 非接口(interface)调用?