Jest 不会转换模块 - SyntaxError: 无法在模块外部使用 import 语句

2024-04-22

我无法摆脱这个SyntaxError: Cannot use import statement outside a module无论我尝试什么,都会出错,而且非常令人沮丧。这里有人解决了这个问题吗?我已经阅读了一百万个 stackoverflow 和 github 问题线程。没有明确的解决方案。

这是一个 React、Typescript、Webpack 项目。我正在尝试测试一个模块。但 Jest 不会改变模块到纯 JavaScript不知何故。

我得到的错误是

/Users/me/dev/Project/project/node_modules/variables/src/variables.js:12
    import './main.js';
    ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      17 | 
      18 | */
    > 19 | import { GlobalVars } from 'variables'
         | ^
      20 | 
      21 | export const Vars = new GlobalVars()
      22 | 

我试图解决这个问题(但没有成功):

  • Using env设置于babel.config: env.test.preset: ['@babel/plugin-transform-modules-commonjs']

  • 修改transform在 Jest 配置中设置为'^.+\\.jsx?$': 'babel-jest', '^.+\\.tsx?$': 'ts-jest'以及围绕此的所有其他可能性。

  • 在 Jest 配置中,testPathIgnorePatterns, transformIgnorePatterns

  • Using .babel.config.js代替.babelrc.js

...和更多。

我有这个设置:

包.json

  "jest": {
    "preset": "ts-jest",
    "testEnvironment": "node"
  }

.babelrc.js

module.exports = {
  presets: [
    ['@babel/preset-env', { targets: { node: 'current' } }],
    '@babel/preset-react',
    '@babel/preset-typescript',
  ],
  plugins: [
    '@babel/plugin-transform-runtime',
    '@babel/proposal-class-properties',
    '@babel/transform-regenerator',
    '@babel/plugin-transform-template-literals',
    'react-hot-loader/babel',
  ],
}

变量.ts

import { GlobalVars } from 'variables'

export const Vars = new GlobalVars()

变量.spec.ts

import { Vars } from './variables.ts'

describe('Test The Package', () => {
  it('Should accept new variables', () => {
    Vars.newVariable = 'new variable'
    expect(Vars.newVariable).toEqual('new variable')
  })
})

关于如何解决这个问题有什么想法吗?


尽管我单独尝试过它们,但我还没有一起尝试过(transform and transformIgnorePatterns)。所以这个笑话配置解决了我的问题:

  "jest": {
    "preset": "ts-jest",
    "testEnvironment": "node",
    "transform": {
      "node_modules/variables/.+\\.(j|t)sx?$": "ts-jest"
    },
    "transformIgnorePatterns": [
      "node_modules/(?!variables/.*)"
    ]
  },

我的错误是:

  1. 不使用transform and transformIgnorePatterns together.
  2. 并定义babel-jest作为变压器而不是ts-jest(我想当preset笑话的定义为ts-jest。因为如果我把它改成babel-jest它再次抛出相同的错误。):
--- "node_modules/variables/.+\\.(j|t)sx?$": "babel-jest"
+++ "node_modules/variables/.+\\.(j|t)sx?$": "ts-jest"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jest 不会转换模块 - SyntaxError: 无法在模块外部使用 import 语句 的相关文章

随机推荐

  • .NET MAUI 导航动画

    如果我想在 MAUI 中为从一个页面到另一页面的过渡设置动画 我需要使用以下命令激活它true value await Shell Current GoToAsync nameof DashboardPage true 这会动画化页面从右到
  • Java 和 Jabber/Smack [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用最新版本的 Smack 3 2 1 编写一个简单的示例 以便在两个帐户之间发送和接收消息 Connection connec
  • 比较击键 - 装配 CCS64

    I want to compare keystrokes in assembly CCS64 If I type in the same key in a row I want to do something example A A do
  • 如何从 Youtube 嵌入中删除暂停菜单视频建议/相关视频(类:ytp-pause-overlay)

    当我的嵌入视频暂停时 YouTube 显示带有视频建议的菜单 iframe 中的元素具有类 ytp pause overlay 如何在不删除控件的情况下删除它 如果您使用 Javascript 加载视频YouTube 播放器 iframe
  • 一个 AndroidManifest.xml 中包含两个 searchable.xml 活动

    我有一个 Android 应用程序 其中有一些不同的活动用于浏览从 RSS 下载的文章和图像 我希望能够提供连接搜索对话框中的搜索按钮 http developer android com intl zh TW guide topics s
  • 如何使用 PhantomReference 作为 Finalize() 替代

    Javadoc 8 的虚拟参考 http docs oracle com javase 8 docs api java lang ref PhantomReference html状态 虚拟引用最常用于调度验尸前与 Java 终结机制相比
  • Floyd Warshall 算法的时间复杂度

    Skiena 的算法书包含以下解释弗洛伊德 沃歇尔算法 http en wikipedia org wiki Floyd E2 80 93Warshall algorithm floyd adjacency matrix g int i j
  • 从MAC地址获取IP。 arp -a 不显示设备

    我正在尝试编写一个批处理文件 该文件应该在连接到网络 腾达 WiFi 路由器 时找到我的 Android 手机的动态分配的 IP 所以我正在尝试arp a并搜索我手机的 MAC 地址 以便我可以从表中获取其 IP C Users Leero
  • Firestore 增量 FieldValue

    所以 我知道有一些类似名称的问题 但这并不相同 我很好奇是否有人可以解释缺乏的原因increment哨兵 类似于delete one 据我所知 字段删除与文档更新没有什么不同 意思是 我可以delete我的字段只需将整个文档更新为一些新数据
  • 计算非连续值

    所以我有以下结构 guid current level current value pk a 100 12 1 a 200 12 2 a 200 12 3 a 200 12 4 a 200
  • 二分查找条件[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我总是对二分搜索算法的条件感到困惑 并且在编程竞赛中花费了我很多时间 我的问题是何时使用这些条件 1 while low lt high 2
  • 自 Android studio 3.5 起,辅助服务在每次运行时都会自动关闭

    由于我将 Android Studio 更新到 3 5 当我启动 Run 来构建和部署我的应用程序时 我的自定义辅助功能服务会自动关闭 不是崩溃 只是在设置中关闭 你能帮我吗 发生的情况是 Studio 在重新安装新版本之前强制停止该服务
  • 如何使用ng-style设置div的背景图片

    基本上我有一个链接 当单击它时 我会显示一个模式 现在我可以在模态上显示其他属性 例如标题 除了背景图像之外 呃呃 这是模态 div class modalContainer div div style padding top 10px s
  • iTunes Connect 提交代码签名权利错误 Xcode 8

    我在使用 Xcode 8 GM 提交最新的应用程序更新时遇到问题 我在此更新中更新了我的 iPhone 和 watchOS 应用程序 当尝试提交时 我收到以下错误 iTunes Store 操作失败 无效的代码签名权利 你的 应用程序包的签
  • 检测 Twitter 的 iOS 版本?

    显然 我对 Twitter oAuth 令牌请求 的使用在 iOS 5 中不起作用 我如何为 iOS 5 以下的任何内容保留此代码并使用适用于 iOS 5 的新 Twitter 框架 可以检测iOS版本吗 Thanks 您 几乎 永远不想查
  • 将 H.264 I 帧放入 AVSampleBufferDisplayLayer 但不显示视频图像

    在详细回顾了 WWDC2014 Session513 后 我尝试在 IOS8 0 上编写我的应用程序来解码和显示一个实时 H 264 流 首先 我成功构建了H264参数集 当我得到一个带有 4 位起始代码的帧时 就像 0x00 0x00 0
  • 日期比较无法在 Angular js 中工作

    谁能告诉我为什么我的约会对象没有开始工作 基本上 当我尝试比较日期时 它在 angularJs 中不起作用 var dateObj1 filter date Date now dd MMM yyyy output is 04 May 201
  • 从文本字段上的日期选择器设置当前日期

    我正在文本字段上设置日期选择器 为此 这就是我所写的 在viewDidLoad let datePicker UIDatePicker datePicker datePickerMode UIDatePickerMode date date
  • 有没有办法改变模态视图控制器外观的动画样式?

    我正在尝试为两个视图控制器视图的出现和消失设置动画 我使用了以下两行代码 self modalTransitionStyle UIModalTransitionStyleCoverVertical self presentModalView
  • Jest 不会转换模块 - SyntaxError: 无法在模块外部使用 import 语句

    我无法摆脱这个SyntaxError Cannot use import statement outside a module无论我尝试什么 都会出错 而且非常令人沮丧 这里有人解决了这个问题吗 我已经阅读了一百万个 stackoverfl