用 Jest 测试 Vue 失败,Jest 遇到了意外的令牌,SyntaxError: Unexpected token import

Posted

技术标签:

【中文标题】用 Jest 测试 Vue 失败,Jest 遇到了意外的令牌,SyntaxError: Unexpected token import【英文标题】:Test Vue with Jest fail, Jest encountered an unexpected token, SyntaxError: Unexpected token import 【发布时间】:2019-02-06 01:00:15 【问题描述】:

我开玩笑地测试 Vue 项目,我得到错误的错误说:

Jest 遇到了意外的令牌和 SyntaxError: Unexpected token import

这是我的 jest.conf.js,我用 babel-jest 和 vue jest 设置了“transorm”选项,但我仍然收到错误说 can't transorm the es6 syntax

const path = require('path')

module.exports = 
  rootDir: path.resolve(__dirname, '../../'),
  moduleFileExtensions: [
    'js',
    'json',
    'vue'
  ],
  moduleNameMapper: 
    '^@/(.*)$': '<rootDir>/src/$1'
  ,
  transform: 
    '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
    '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
  ,
  testPathIgnorePatterns: [
    '<rootDir>/test/e2e'
  ],
  snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
  setupFiles: ['<rootDir>/test/unit/setup'],
  coverageDirectory: '<rootDir>/test/unit/coverage',
  collectCoverageFrom: [
    'src/**/*.js,vue',
    '!src/main.js',
    '!src/router/index.js',
    '!**/node_modules/**'
  ]

这是 .babelrc 配置:


  "presets": [
    [
      "env",
      
        "modules": false,
        "targets": 
          "browsers": [
            "> 1%",
            "last 2 versions",
            "not ie <= 8"
          ]
        
      
    ],
    "stage-2"
  ],
  "plugins": [
    "transform-vue-jsx",
    "transform-runtime",
    [
      "component",
      
        "libraryName": "element-ui",
        "styleLibraryName": "~node_modules/modeling-theme-element/lib"
      
    ]
  ],
  "env": 
    "test": 
      "presets": [
        "env",
        "jest",
        "stage-2"
      ],
      "plugins": [
        [
          "dynamic-import-node",
          
            "root": [
              "./src"
            ],
            "alias": 
              "@": "./src"
            
          
        ]
      ]
    
  

【问题讨论】:

我相信这是开玩笑的问题。你用的是哪个版本?你能粘贴你的 package.json 吗? 【参考方案1】:

我遇到了类似的问题,“babel-plugin-transform-es2015-modules-commonjs”对我有用

npm i -D babel-plugin-transform-es2015-modules-commonjs

.babelrc 配置 "plugins":["transform-es2015-modules-commonjs"]

【讨论】:

谢谢!我花了 3 周的时间才找到您的解决方案。它对我有用。【参考方案2】:

很可能在更新包依赖项时,"babel-core" 依赖项可能已更新为 6.xx.x,它应该是 "7.0.0-bridge.0" 才能正常工作。

参考: https://github.com/vuejs/vue-cli/issues/1879#issuecomment-412300256 https://github.com/vuejs/vue-cli/issues/1879#issuecomment-435194932

【讨论】:

以上是关于用 Jest 测试 Vue 失败,Jest 遇到了意外的令牌,SyntaxError: Unexpected token import的主要内容,如果未能解决你的问题,请参考以下文章

vue3配置jest测试环境踩坑

在使用 jest 的 vue 测试中找不到模块“@jest/globals”

调试 Jest 测试 Visual Studio 代码

在 vue-multiselect 中测试 vuex 操作时调用了 Jest 预期的模拟函数

用 jest 测试 Vue 过滤器

Vue 组合 API + Jest