Skip to content

Vue compat with Jest: "TypeError: decode_js.EntityDecoder is not a constructor" #10609

@baffalop

Description

@baffalop

Vue version

3.4.21 (with @vue/compat 3.4.21)

Link to minimal reproduction

https://stackblitz.com/edit/vue2-jest-8qoex3?file=jest.config.js&view=editor

Steps to reproduce

yarn install
yarn test

What is expected?

I would like to run unit tests with Vue Test Utils, while on the migration build. My application has Vue 2 dependencies which cause unit tests to fail when they are run with Vue 3. I would expect to be able to use the migration build to fix this by aliasing vue to @vue/compat via moduleNameMapper. (This is the approach recommended by vue-test-utils-compat though the minimal reproduction uses latest @vue/test-utils.)

What is actually happening?

Running tests with moduleNameMapper: { '^vue$': '@vue/compat' } causes the following TypeError:

TypeError: decode_js.EntityDecoder is not a constructor
...
at new Tokenizer (node_modules/@vue/compat/dist/vue.cjs.js:13619:28)
      at Object.<anonymous> (tests/unit/example.spec.ts:6:22)

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 18.18.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.2.3 - /usr/local/bin/npm
    pnpm: 8.15.3 - /usr/local/bin/pnpm
  npmPackages:
    vue: ^3.3.4 => 3.4.21 

Any additional comments?

This is the same error as in #10148 though it doesn't affect me at build- or runtime, only in Jest.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions