Skip to content

TypeError: Cannot read property '_modulesNamespaceMap' of undefined #1330

Closed
@Prior99

Description

@Prior99

Versions

  • vuex: 3.0.1
  • vue-test-utils: 1.0.0-beta.18
  • vue-jest: 2.6.0
  • vue-template-compiler: 2.5.16
  • vue: 2.5.16
  • jest: 23.2.0

Reproduction link

https://github.com/Prior99/vuex-crash-reproduce

Steps to reproduce

  1. Clone reproduction repository
  2. Install dependencies using yarn
  3. Run the unit tests using yarn test

What is expected?

The unit tests should pass.

What is actually happening?

The unit tests fail with:

    TypeError: Cannot read property '_modulesNamespaceMap' of undefined
        at getModuleByNamespace (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vuex/dist/vuex.common.js:914:22)
        at VueComponent.mappedGetter (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vuex/dist/vuex.common.js:847:25)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at Watcher.evaluate (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3247:21)
        at Proxy.computedGetter (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3505:17)
        at Proxy.render (/home/prior/repositories/kn/jest-vue-reproduce/src/some-component.vue:726:50)
        at VueComponent.Vue._render (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:4542:22)
        at VueComponent.updateComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2786:21)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at new Watcher (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3129:12)
        at mountComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2793:3)
        at VueComponent.Object.<anonymous>.Vue.$mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:7997:10)
        at init (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:4135:13)
        at createComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5606:9)
        at createElm (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5553:9)
        at createChildren (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5680:9)
        at createElm (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5582:9)
        at VueComponent.patch [as __patch__] (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:6089:7)
        at VueComponent.Vue._update (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2658:19)
        at VueComponent.updateComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2786:10)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at new Watcher (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3129:12)
        at mountComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2793:3)
        at VueComponent.Object.<anonymous>.Vue.$mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:7997:10)
        at init (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:4135:13)
        at createComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5606:9)
        at createElm (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5553:9)
        at VueComponent.patch [as __patch__] (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:6089:7)
        at VueComponent.Vue._update (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2658:19)
        at VueComponent.updateComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2786:10)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at new Watcher (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3129:12)
        at mountComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2793:3)
        at VueComponent.Object.<anonymous>.Vue.$mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:7997:10)
        at Object.mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/@vue/test-utils/dist/vue-test-utils.js:5940:21)
        at Object.<anonymous> (/home/prior/repositories/kn/jest-vue-reproduce/src/__tests__/test-something.ts:19:21)
        at Object.asyncFn (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
        at resolve (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
        at new Promise (<anonymous>)
        at mapper (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
        at promise.then (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
        at <anonymous>
        at process._tickCallback (internal/process/next_tick.js:188:7)

When changing the store module not to use namespaces by removing the

                namespaced: true,

in both src/__tests__/test-something.ts and src/store.ts and changing the line

        ...mapGetters("myModule", ["getContent"]),

to

        ...mapGetters(["getContent"]),

in src/some-component.vue the error changes to:

    TypeError: Cannot read property 'getters' of undefined
        at VueComponent.mappedGetter (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vuex/dist/vuex.common.js:850:73)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at Watcher.evaluate (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3247:21)
        at Proxy.computedGetter (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3505:17)
        at Proxy.render (/home/prior/repositories/kn/jest-vue-reproduce/src/some-component.vue:726:50)
        at VueComponent.Vue._render (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:4542:22)
        at VueComponent.updateComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2786:21)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at new Watcher (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3129:12)
        at mountComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2793:3)
        at VueComponent.Object.<anonymous>.Vue.$mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:7997:10)
        at init (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:4135:13)
        at createComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5606:9)
        at createElm (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5553:9)
        at createChildren (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5680:9)
        at createElm (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5582:9)
        at VueComponent.patch [as __patch__] (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:6089:7)
        at VueComponent.Vue._update (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2658:19)
        at VueComponent.updateComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2786:10)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at new Watcher (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3129:12)
        at mountComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2793:3)
        at VueComponent.Object.<anonymous>.Vue.$mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:7997:10)
        at init (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:4135:13)
        at createComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5606:9)
        at createElm (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:5553:9)
        at VueComponent.patch [as __patch__] (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:6089:7)
        at VueComponent.Vue._update (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2658:19)
        at VueComponent.updateComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2786:10)
        at Watcher.get (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3140:25)
        at new Watcher (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:3129:12)
        at mountComponent (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:2793:3)
        at VueComponent.Object.<anonymous>.Vue.$mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/vue/dist/vue.runtime.common.js:7997:10)
        at Object.mount (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/@vue/test-utils/dist/vue-test-utils.js:5940:21)
        at Object.<anonymous> (/home/prior/repositories/kn/jest-vue-reproduce/src/__tests__/test-something.ts:19:21)
        at Object.asyncFn (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
        at resolve (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
        at new Promise (<anonymous>)
        at mapper (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
        at promise.then (/home/prior/repositories/kn/jest-vue-reproduce/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
        at <anonymous>
        at process._tickCallback (internal/process/next_tick.js:188:7)

Please note that the unit test is not failing with these errors. They are logged from inside vue.runtime.common.js.
The actual error with which the unit tests fail is:

    TypeError: Cannot read property 'getters' of undefined

      at VueComponent.mappedGetter (node_modules/vuex/dist/vuex.common.js:850:73)
      at Proxy.render (src/some-component.vue:726:50)
      at Object.<anonymous> (src/__tests__/test-something.ts:19:21)

Hints

  • When removing Vue.extend in src/some-component.vue the failing test passes.
  • The error only occurs when the SomeComponent component is used inside a parent component, hence the test in src/__tests__/test-some-component.ts test is passing.
  • This also happens with version 2.x.x of vuex and older versions of jest and vue.
  • This issue also happens when not using local vue.

This issue might be related to other issues across the web:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions