Jest 测试在 d3 导入时失败

2024-01-08

我正在运行测试

import { render } from '@testing-library/react';
import MyComponent from '../../../../components/MyComponent';

test('renders MyComponent', () => {
  render(<MyComponent />);
});

在使用 d3 的 React 应用程序组件上,导入如下:

import React from 'react';
import * as d3 from 'd3';

使用命令

react-scripts test

这会在 d3 导入时产生错误:

Jest encountered an unexpected token

This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

Here's what you can do:
 • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/en/ecmascript-modules for how to enable it.
 • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
 • If you need a custom transformation specify a "transform" option in your config.
 • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html

Details:

/Users/wogsland/Projects/sepia/node_modules/d3/src/index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export * from "d3-array";
                                                                                         ^^^^^^

SyntaxError: Unexpected token 'export'

我缺少什么?该组件在浏览器中工作正常,只是在最基本的测试中失败了。


要转换某些“node_modules”文件,您可以在配置中指定自定义“transformIgnorePatterns”。

从上面的建议中,我们可以告诉Jest不要解析ES模块node_modules.

In your jest.config.js文件中,您可以添加以下行。您可以将任何您想要的 ES 模块添加到阵列中。

const esModules = ['d3', 'd3-array', 'other-d3-module-if-needed'].join('|');

module.exports = {
  // ...
  transformIgnorePatterns: [`/node_modules/(?!${esModules})`],
  // ...
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jest 测试在 d3 导入时失败 的相关文章

随机推荐

  • Google App Engine Cloud Endpoints Pr@blem 标记 -> 在干净的 Android 项目上生成 App Engine 错误

    我创建了一个干净的 Android 应用程序A然后我右键单击它并选择Google gt Generate App Engine这导致了这个 错误描述是 Description Resource Path Location Type Ther
  • Java - 如何将 String 设置为 static int

    我有一个只接受字符串的方法 public void setVerticalAlignment String align gd verticalAlignment align accepts only int But gd verticalA
  • tcsh 脚本不退出

    我正在运行 CentOS 7 并且 tcsh 脚本出现问题 我有一个名为 quittest 的简单脚本 bin tcsh echo Simple Test exit 0 当我从终端运行 quittest 时 我得到 Simple Test
  • Azure Functions 和 IHealthCheck

    我需要对 Azure Functions 实施运行状况检查 https learn microsoft com en us aspnet core host and deploy health checks view aspnetcore
  • 如何让这个很长的网址显得很短?

    我已将大部分网站设置为 SE 友好型 但网站的一部分让我感到厌烦 我在其中一个页面中有一个巨大的表单 提交表单 action php page 时 URL 太长 一行包含了半个 word 文档 其中包含所有传递的变量 这是非常丑陋的 有什么
  • 如何在SQL Server中存储unicode字符?

    在 SQL Server 中 我试图创建一个可以存储 unicode 字符的表 具体是这个 https www fileformat info info unicode char 0144 index htm https www filef
  • Python 函数相当于 R 的“pretty()”?

    我正在用 Python 复制一些 R 代码 我被 R 绊倒了pretty 我所需要的只是pretty x where x是一些数字 粗略地说 该函数将 计算漂亮的断点 作为多个 轮 值的序列 我不确定是否有 Python 的等价物 而且我在
  • Google 登录签名的 apk 无法正常工作

    好吧 直到我生成签名的 apk 为止 一切正常 我按照谷歌开发者页面上的说明进行了整个过程 1 我生成了 google services json 文件 其中包含 keyhash 和包名称2 像这样包含所有类级别和应用程序级别依赖项 Top
  • 删除重复项并附带警告

    我有一个包含 rowID 经度 纬度 businessName url 标题的表 这可能看起来像 rowID long lat businessName url caption 1 20 20 Pizza Hut yum com null
  • Angular-UI 全局键绑定

    我已经开始使用 angular ui 按键模块 并且想知道是否有一种方法可以使全局快捷键无论我放置在体内的哪个位置都可以工作 我尝试将 ui keydown 链接到正文 但由于它没有焦点 因此不会触发关键事件 eg 我知道我可以只关注一个
  • 在C++中,当我需要使用枚举时,如何避免#include头文件?

    在我的 C 头文件中 我尝试使用前向声明 class MyClass 而不是 include 类头 正如许多 C 编码标准中所建议的那样 Google C 样式指南就是其中之一 不幸的是 当我引入枚举时 我无法再进行前向声明了 像这样 my
  • 如何使用 Laravel 5.5 身份验证使电子邮件登录不区分大小写

    在构建我的应用程序时 我通过运行使用了 Laravel 身份验证脚手架php artisan make auth这很棒 节省了我很多时间 但是 我遇到了用户无法登录的问题 因为他们不记得最初注册时使用的电子邮件大小写 例如 注册的用户 em
  • Wix Burn:自定义引导程序升级,但与旧版本并排安装

    我正在努力解决自定义引导程序升级问题 依照指示这个线程 https stackoverflow com questions 17676657 wix burn bootstrapper majorupgrade 我正在使用 LaunchAc
  • 弹出窗口显示片段中的一些内容

    我正在尝试制作类似弹出窗口的东西 当单击片段中的视图时会出现该窗口 我希望这个弹出窗口或其他任何东西不要使片段变暗 就像对话框片段那样 我还希望弹出窗口位于单击视图的位置 如果它有自己的活动和布局那就太好了 这样我就可以在其中进行一些自定义
  • 无法在 Rails 4 中批量分配受保护的属性

    我无法理解我的代码有什么问题 Rails 4 帖子中的参数 name gt name 新行动 m Menu new params permit name 此代码的最后一行生成 无法为菜单批量分配受保护的属性 名称 在 Rails 4 中使用
  • 尝试在 IE11 中打开为程序生成的 PDF 生成的 URL 时显示“访问被拒绝”

    对于我正在开发的应用程序 我们有一个功能 可以在服务器端为对象生成报告 并在客户端的新选项卡 暂时 中打开它 我正在使用URL createObjectURL函数创建一个 URLBlob 它由 AJAX 调用的结果组成 每当一个 windo
  • 使用 PDO 准备语句插入密码哈希

    在基本的 mysql 插入中 您可以设置密码变量 PASSWORD password 但这会破坏 PDO 语句 使用 pdo prepare 和 pdo execute 时如何散列密码 sql INSERT INTO contractors
  • log4net配置问题

    我有一个单独的 Log4Net config 文件 我添加了 assembly log4net Config XmlConfigurator ConfigFile Log4Net config Watch true 到 AssemblyIn
  • 从两个角度算出顺时针转还是逆时针转

    我正在 XNA 中制作游戏 我有敌人和玩家 敌人应该逐渐转向玩家 他们应该弄清楚是否需要顺时针转动或逆时针转动 以较短者为准 我通过使用 Atan2 得到了敌人当前面对的角度和它应该面对的角度 敌人和玩家之间的线的角度 作为弧度 不过我有一
  • Jest 测试在 d3 导入时失败

    我正在运行测试 import render from testing library react import MyComponent from components MyComponent test renders MyComponent