SyntaxError: Cannot use import statement outside a module when following vue-test-utils official tutorial

SyntaxError: Cannot use import statement outside a module when following vue-test-utils official tutorial

我无法使用 vue-test-utils 和 jest 进行 vue 测试。我用 vue cli 创建了一个干净的新项目,并按如下方式添加了 jest,也许有人可以跟进并告诉我我做错了什么。 (我正在遵循此安装指南:https://vue-test-utils.vuejs.org/installation/#semantic-versioning

  1. vue create jest-test

    1.1。 npm install

  2. npm install --save-dev jest @vue/test-utils vue-jest

  3. 向package.json添加了笑话配置:

    {
      "jest": {
        "moduleFileExtensions": [
          "js",
          "json",
          "vue"
        ],
        "transform": {
          ".*\.(vue)$": "vue-jest"
        }
      }
    }
    
  4. npm install --save-dev babel-jest @babel/core @babel/preset-env babel-core@^7.0.0-bridge.0

  5. 将 jest 配置调整为:

    {
      "jest": {
        "transform": {
          // process `*.js` files with `babel-jest`
          ".*\.(js)$": "babel-jest" //<-- changed this
        }
      }
    }
    
    1. 将 babel 配置调整为:
    module.exports = {
        presets: [
            '@vue/cli-plugin-babel/preset',
            '@babel/preset-env' //<-- added this
        ]
    };
    
  6. 在项目根目录 (jest-test/tests) 下的测试目录中创建 example.test.js

  7. 向该文件添加了以下内容:

    import { mount } from '@vue/test-utils'
    import HelloWorld from "@/components/HelloWorld";
    
    
    test('displays message', () => {
        const wrapper = mount(HelloWorld)
    
        expect(wrapper.text()).toContain('Welcome to Your Vue.js App')
    })
    
  8. 向 package.json 脚本添加了以下内容: "jest": "jest"

  9. npm run jest

  10. 得到如下错误:

    C:\Users\xxx\jest-test\tests\example.test.js:1
        import { mount } from '@vue/test-utils'
        ^^^^^^
    
        SyntaxError: Cannot use import statement outside a module
    

如果我在现有项目中尝试使用 Mocha,也会发生同样的情况。这是一个错误吗?无论我做什么,我都无法让它工作。

编辑:如果我用 Vue CLI 做,它会起作用 https://vue-test-utils.vuejs.org/installation/#installation-with-vue-cli-recommended

您需要转换 *.vue 个文件和 *.js 个文件。 我尝试了您的设置并且可以重现该问题。但是在将 jest.config.js 更改为以下内容后,测试将 运行 正常:

module.exports = {
  "moduleFileExtensions": [
    "js",
    "json",
    "vue"
  ],
  transform: {
    '.*\.js$':'babel-jest',
    ".*\.(vue)$": "vue-jest"
  },
  moduleNameMapper: {
    "@/(.*)": "<rootDir>/src/",
  },
  testEnvironment: 'jsdom'
}