Import Jest以不同于ts节点的方式传输代码

Import Jest以不同于ts节点的方式传输代码,import,jestjs,es6-modules,dayjs,Import,Jestjs,Es6 Modules,Dayjs,在正常运行项目和开玩笑的情况下,我无法使代码正常工作 运行项目需要对dayjs进行此类导入: import * as dayjs from 'dayjs'; import * as utc from 'dayjs/plugin/utc'; import * as customParseFormat from 'dayjs/plugin/customParseFormat'; import dayjs from 'dayjs'; import utc from 'dayjs/plugin/ut

在正常运行项目和开玩笑的情况下,我无法使代码正常工作

运行项目需要对dayjs进行此类导入:

import * as dayjs from 'dayjs';
import * as utc from 'dayjs/plugin/utc';
import * as customParseFormat  from 'dayjs/plugin/customParseFormat';
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import customParseFormat  from 'dayjs/plugin/customParseFormat';
npm运行开发(nodemon--exec./node\u modules/.bin/ts node./src/app.ts):没有问题

笑话:
类型错误:t不是函数

运行Jest测试需要对dayjs进行此类导入:

import * as dayjs from 'dayjs';
import * as utc from 'dayjs/plugin/utc';
import * as customParseFormat  from 'dayjs/plugin/customParseFormat';
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import customParseFormat  from 'dayjs/plugin/customParseFormat';
npm运行开发(nodemon--exec./node\u modules/.bin/ts node./src/app.ts):

dayjs.extend(utc);
      ^
TypeError: Cannot read property 'extend' of undefined`
开玩笑:成功

所以现在我不可能写测试了。为什么它的传输方式不同?

我切换到,它解决了我的问题。我假设我可以编写JS测试来测试TS代码,但我认为这是不可能的

tsconfig.json

{
  "compilerOptions": {
    "esModuleInterop": true
  }
}

解决了这个问题。

您可以编写JS测试来测试TS代码。而Jest自己也不会做任何事情。它使用Transpiler来传输代码。默认情况下使用Babel,它可以通过插件处理TS。无论如何,ts jest是一个更好的工具。这里的问题在于如何配置模块互操作(在
*
和默认导出之间不匹配)。