在使用Vue Js运行Jest测试时,出现"SyntaxError: Cannot use import statement outside a module"错误。

14
我按照这个教程 https://frontstuff.io/build-your-first-vue-js-component 构建了一个Vue.js组件。 然后我按照这个教程 https://frontstuff.io/unit-test-your-first-vuejs-component 单元测试该组件。 导入组件时,单元测试在import语句处失败,并返回以下错误信息:

● 测试套件运行失败

C:\Users\SHINIGAMI-ALFSABAH\Documents\Workspace\Dev\Vue\star-rating\node_modules\vue-awesome\icons\star.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import Icon from '../components/Icon.vue'
                                                                                         ^^^^^^

SyntaxError: Cannot use import statement outside a module

  12 | 
  13 | <script>
> 14 |     import 'vue-awesome/icons/star'
     | ^
  15 |     import Icon from 'vue-awesome/components/Icon'
  16 | 
  17 |     export default {

  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
  at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
  at src/components/Rating.vue:14:1
  at Object.<anonymous> (src/components/Rating.vue:67:3)

任何帮助都将不胜感激。

3个回答

18

我在Stack Overflow上找到了一个类似问题的答案 在运行Jest测试时出现“意外令牌'import'”错误?

基本上,我必须更改我的Jest配置中的transformIgnorePatterns数组:

transformIgnorePatterns: ["/node_modules/"],

变成

transformIgnorePatterns: ["/node_modules/(?!vue-awesome)"],

确保jest编译 'vue-awesome' 模块以在测试中使用。


6
我所做的是安装 vue 和 jest 需要的依赖项,然后创建了一个用于 babel 和 jest 的配置文件。
//Installing dependencies for jest and vue js
npm i -D @vue/test-utils jest vue-jest @vue/babel-preset-app babel-core@^7.0.0-bridge.0


//jest.config.js
module.exports = {
    moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
    transform: {
        ".*\\.(vue)$": "vue-jest",
        "^.+\\.js$": "<rootDir>/node_modules/babel-jest"
    }
};


//babel.config.js
module.exports = {
    presets: [
        '@vue/app'
    ]
};


0
对我来说,它在组件中缺少了一个名为name:的字段,并清除了Jest缓存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接