首页 > 其他分享 >ts-jest无法编译执行ESM【解决步骤】

ts-jest无法编译执行ESM【解决步骤】

时间:2024-03-30 15:00:49浏览次数:24  
标签:babel ts js json jest ESM config

很常见的错误就是 SyntaxError: Unexpected token 'export',需要确保以下操作,才能解决问题

  1. tsconfig.json 中 compilerOptions.module 与 target 要设置为 ESNext,compilerOptions.target 也要设置为 ESNext, esModuleInterop 设置为 true, 确定tsc将目标代码编译为 ESM版本。其次 moduleResolution 设置为 'node' 以便能够正确解析路径。
  2. 如果你的源代码中存在自定义的包,例如使用 rollup 构建,则 rollup.config.js 中要设置指定的模块化规范
import typescript from '@rollup/plugin-typescript';

export default {
  input: 'src/index.ts',
  output: {
    dir: 'dist',
    format: 'es'
  },
  plugins: [typescript()]
};
  1. jest.config.js 中配置 babel-jest
// jest.config.js 或 package.json 中的 Jest 配置
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  transform: {
    '^.+\\.tsx?$': 'ts-jest',
    '^.+\\.jsx?$': 'babel-jest', // 使用 babel-jest 进行转换
  },
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  // 添加其他 Jest 配置
};
  1. 在 babel.config.json 中配置预设
{
  "presets": ["@babel/preset-env"]
}
  1. 或者使用 babel.config.js 文件
// babel.config.js
module.exports = {
  presets: [
    ['@babel/preset-env', { targets: { node: 'current' } }]
  ]
};

标签:babel,ts,js,json,jest,ESM,config
From: https://www.cnblogs.com/pomelott/p/18105464

相关文章

  • Vue3+Vite+Axios Request 请求封装(TS版本)最新
    Vue3+Vite+AxiosRequest请求封装(TS版本)http>index.ts请求封装/**@Date:2024-03-3012:37:05*@LastEditors:zhong*@LastEditTime:2024-03-3014:12:52*@FilePath:\app-admin\src\http\index.ts*/importaxios,{AxiosInstance,AxiosRequestCon......
  • SQL95 从 Products 表中检索所有的产品名称以及对应的销售总数(sum() ,group by..)
    selectprod_name,sum(quantity)asquant_soldfromProductsPinnerjoinOrderItemsOIonP.prod_id=OI.prod_idgroupbyprod_name;......
  • yii2 配置bootstrap使用
    yii2配置bootstrap使用配置config/web.php添加people<?php...$config=[...'bootstrap'=>['log','people'],...'components'=>['people'=>['class'......
  • Babylon 如何使用AssetsManager(),导入多个模型
    AssetsManager是Babylon.js资产管理工具,可以加载多个模型或者纹理,并且在任务完成时提供回调函数。例如://创建一个AssetsManager实例constassetsManager=newBABYLON.AssetsManager(scene);//添加纹理加载任务consttextureTask=assetsManager.addTexture......
  • Struts2 s2-062 oglnRCE
    struts2漏洞总结(到19年4月)-提笔冩未來-博客园(cnblogs.com)CVE-2021-31805struts2介绍什么是MVC(Model-View-Controller)?基础|三层架构与MVC模式-知乎(zhihu.com)MVC模式MVC模式是软件工程中常见的一种软件架构模式,该模式把软件系统(项目)分为三个基本部分:模型(Mod......
  • nbtstat /?命令参数 显示使用NBT(NetBIOS over TCP/IP)的协议统计信息和当前TCP/IP连接
    NBTSTAT(NetBIOSoverTCP/IPStatistics)是一个用于显示和更新NetBIOS名称缓存、NetBIOS名称表和NetBIOS会话表的Windows命令行实用程序。它允许用户查看当前网络上的NetBIOS名称信息,以便诊断网络连接问题和执行基本的网络故障排除。NetBIOS是一种用于在局域网中进行通信的协议,它......
  • Linux架构27 Ansible变量, 定义变量的方式, 变量注册, facts缓存
    Ansible变量一、变量概述变量提供了便捷的方式来管理Ansibleplaybook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其他地方或许会反复使用,那么如果讲此值设置为变量,然后再在其他的playbook中调用,会方便许多。如此一来还方便维护,减少维护的成本。二、定义变量的......
  • vuex.esm.js:135 Uncaught Error: [vuex] getters should be function but “getters.
    报错vuex.esm.js:135UncaughtError:[vuex]gettersshouldbefunctionbut"getters.mode"inmodule"userModule"is"dark".atassert(vuex.esm.js:135:1)原因:在使用vuex的moulds时index.js中已创建了一个vue实例newVuex.Store,在模块文件中又再创建了一个,导致报......
  • TSINGSEE青犀智慧工厂视频汇聚与安全风险智能识别和预警方案
    在智慧工厂的建设中,智能视频监控方案扮演着至关重要的角色。它不仅能够实现全方位、无死角的监控,还能够通过人工智能技术,实现智能识别、预警和分析,为工厂的安全生产和高效运营提供有力保障。TSINGSEE青犀智慧工厂智能视频监控方案,主要是采用高清摄像头,通过智能分析技术,实现对工厂......
  • Item2:用consts,enums和inlines取代#defines
    芝士wa2024.3.29Item2链接“用compiler(编译器)取代preprocessor(预处理器)”,问题就在于因为#define不被视为语言的一部分要理解这句话,需要先了解C++程序的编译过程:1.预处理preprocess预处理是编译前的准备工作。在这一步中,预处理器会执行以下操作:替换所有的宏定义(#defin......