当前位置: 首页 > 知识库问答 >
问题:

使用Jest进行意外令牌导入(babel eslint无法从测试文件symlink env获得)

仲孙逸明
2023-03-14

我在将单元测试集成到项目的特定文件夹中时遇到问题。

我的架构如下:

|_ shared
|_ job-board
|_ admin-panel

作业板和管理面板都包含指向共享的符号链接,位于/client/src/shared,每个都包含安装了babel eslint的节点模块文件夹。shared不包含node_modules文件夹,它依赖于另外两个文件夹的node_模块。

有了这个架构,我成功地配置了我正在使用的所有工具(Webpack、eslint、eslint loader等等,但不是Jest)。

问题是,当我在job_board/*admin_panel/*中创建一个*.test.js文件时,Babel-jest会正确应用于此文件,但是当我在share/*中创建此文件时,Babel-jest未应用(因为Babel-jest在share中不可用),因为以下错误证明:

FAIL  ..\shared\utils\tests\StringUtils.test.js
● Test suite failed to run
SyntaxError: Unexpected token import

这是我的jest-config.json文件:

{
  "moduleFileExtensions": [
    "js"
  ],
  "moduleNameMapper": {
    "\\.(css|scss)$": "identity-obj-proxy"
  },
  "modulePaths": [
    "<rootDir>/client"
  ],
  "testPathDirs": [
    "<rootDir>",
    "<rootDir>/../shared"
  ],
  "testRegex": "(\\.|/)test\\.jsx?$"
}

(注意,我必须添加"

和my.babelrc文件:

{
  "plugins": [
    "transform-decorators-legacy",
    "transform-object-rest-spread"
  ],
  "presets": [
    ["es2015", { "modules": false }],
    "react",
    "stage-0"
  ],
  "env": {
    "development": {
      "presets": [
        "react-hmre"
      ]
    },
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

最后,我使用:节点--harmony_proxiesnode_modules/jest-cli/bin/jest.js--config./jest-config.json

我是否遗漏了一些东西,或者这真的是缺少为babel eslint或其他东西提供“根”的功能?

我还就Jest repo发行了一期债券,但它已经关闭了。我来了!

上面粘贴的Jest配置。

jest cli:18.1.0

节点: 5.6.0

净现值:3.6.0

操作系统: Windows 10


共有2个答案

裴欣荣
2023-03-14

对于那些对变通方法感兴趣的人,我在浏览Babel-jest的源文件时想出了一个解决方案。只需在你的repos的公共根部创建一个. babelrc,扩展真正的根部。所以在我的情况下:

{
  "extends": "./admin-panel/.babelrc"
}
边浩波
2023-03-14

看起来您与此人有类似的问题。

您是否在.babelrc文件中尝试过以下操作?

"env": {
  "start": {
    "presets": [
      "react-hmre"
    ]
  },
  "test": {
    "presets": ["es2015", "react", "stage-0"],
    "plugins": ["transform-es2015-modules-commonjs"]
  }
}
 类似资料:
  • 我正在学习反应,我想测试我的一个组件,但我坚持这个错误: 以下是我在阅读stackoverflow和github上的帖子时尝试过的一些东西 添加了测试预设和这些插件“变换-es2015-moids-Common js”、动态导入节点”到我的babel配置 在我的包裹里。json Jest属性具有以下设置: 我的实际组件是用ES6和typescript构建的,如果这对您有帮助的话:) 从我所读到的内

  • 使用Jest测试Firebase功能,我遇到了导入的麻烦... console.log 我正在使用@Babel/core和@Babel/preet-env和Babel-jest package.json 我创建了一个babel.config.js文件 babel.config.js 我错过了什么?谢谢你的反馈 更新 我用Babel文档更新了我的配置。。。(v 7) console.log pack

  • 我已经为连接的组件创建了测试。在一个文件中,我导入位于项目根文件夹外部的“本地化”模块。它没有被编译到ES5,Jest报告了同步错误:意外令牌导出。如何强制Jest转换该文件? 我有。带环境预设的巴别LRC。 package.json

  • 问题内容: 这是我来自package.json文件的笑话配置: .babelrc文件位于我的根文件夹中: 根据在开玩笑的入门页面上找到的文档,这是babel运作所需的一切,这很神奇。 无论如何,此测试: 返回: 我究竟做错了什么? 问题答案: Jest设置了env变量进行测试,因此我不得不将预设添加到.babelrc中的env设置中:

  • 问题内容: 我的项目中已经实现了其他相关问题中提供的解决方案,例如在.babelrc中包含正确的预设(es2015)。 我有两个项目(分别称为A和B),它们都使用ES6模块语法。在项目A中,我导入了通过npm安装的项目B,该项目位于node_modules文件夹中。当我为项目A运行测试套件时,出现错误: SyntaxError:意外的令牌导入 在此之前,项目B声称存在以下错误代码行: (函数(导出

  • 在其他相关问题中提供的解决方案,例如在中包括适当的预设(es2015)。babelrc已在我的项目中实现。 我有两个项目(我们称它们为A和B),它们都使用ES6模块语法。在项目A中,我正在导入通过npm安装的项目B,该项目位于node_modules文件夹中。当我为项目A运行测试套件时,我得到了错误: SyntaxError:意外的令牌导入 前面是项目B中的这一错误代码行: (函数(导出、要求、模