Vue/Typescript/Jest - Jest 单元测试语法错误:意外的令牌导入

Posted

技术标签:

【中文标题】Vue/Typescript/Jest - Jest 单元测试语法错误:意外的令牌导入【英文标题】:Vue/Typescript/Jest - Jest Unit Test SyntaxError: Unexpected token import 【发布时间】:2019-03-27 18:14:59 【问题描述】:

我正在运行一个 Vue/Typescript/Vuetify 项目(使用 vue cli 3 创建)。对于单元测试,我使用的是 Jest。我升级到了更新版本的 Vuetify(1.3.1)。自升级以来,我在运行 Jest 测试时遇到错误:

location_to_project\node_modules\vuetify\lib\index.js:1
    ("Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest)import Vuetify from './components/Vuetify';
                                                                                        ^^^^^^
   SyntaxError: Unexpected token import

      1 | import Vue from 'vue'
      2 | // @ts-ignore
    > 3 | import Vuetify from 'vuetify/lib'
        | ^
      4 | import 'vuetify/src/stylus/app.styl'
      5 |
      6 | Vue.use(Vuetify, 

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:4    7)
03:17)
      at Object.<anonymous> (src/plugins/vuetify.ts:3:1)

版本和环境

Vuetify: 1.3.0 Vue: 2.5.17

曾在:

Vuetify: 1.2.10 Vue: 2.5.17

babel.config.js

module.exports = 
  presets: [
        [
            "@vue/app",
            
                useBuiltIns: "entry"
            
    ],
  ],
;

tsConfig 编译器:

"target": "esnext"

"module": "esnext"

【问题讨论】:

当我在版本 1.1.13 中尝试按照您的方式导入时,我遇到了同样的错误。我不知道为什么这以前曾经奏效过。 【参考方案1】:

我遇到了同样的问题。 但是,我可以通过以下解决方法。

import Vuetify from 'vuetify'

只需删除“/lib”

【讨论】:

当我听从你的建议时,我摆脱了关于那条线的错误。但是,在下一行检测到错误:import 'vuetify/src/stylus/app.styl'。此外,在 Vuetify 包中进行更改有点可怕...... 为什么需要导入样式(比如css)?删除它怎么样? 谢谢!我找到了问题的根源:我正在测试的组件从main.js 导入了一个事件总线,而正是 在这个main.js 文件中 中的 Vuetify 导入导致了问题。我重组了我的代码,使组件不再从main.js 导入【参考方案2】:

我遇到了类似(奇怪)的问题。在this 线程中找到了答案。

解决方案是运行

npx jest --clearCache

然后测试就开始了。

【讨论】:

以上是关于Vue/Typescript/Jest - Jest 单元测试语法错误:意外的令牌导入的主要内容,如果未能解决你的问题,请参考以下文章

zosftplib submit_wait_job(jcl) 函数不接收 JES 输出

使用 IEFs-s-rEQ 宏的 MVS JES2 清除作业

开玩笑 使用 d3 时意外的令牌“导出”

servlet版本与tomcat版本对应关系

Java Enterprise Server与Glassfish

敏捷漫画#41-Scrum模式