开玩笑:类型错误:无法读取未定义的属性

Fox*_*Pro 7 unit-testing typescript ecmascript-6 reactjs jestjs

我试图测试我的 React 类,它有import dotnetify from "dotnetify";导入。这工作正常,但 Jest 说,dotnetify 是未定义的。如果我更改为const dotnetify = require("dotnetify");,Jest 通过测试,但这是愚蠢的解决方法。如何解释 Jest,那个 dotnetify 不是未定义的?

比你提前。

Est*_*ask 6

这无法向 Jest 进行“解释”,它确实是未定义的。

有多种方法可以在 TypeScript 中处理 CommonJS 模块。正如此答案中所解释的,仅当使用esModuleInterop( ) 编译器选项启用了合成导入时,CommonJS packge 中才会默认导入allowSyntheticDefaultImports

否则应该这样做:

import * as dotnetify from "dotnetify";
Run Code Online (Sandbox Code Playgroud)

或者使用 TypeScript 特定的语法:

import dotnetify = require("dotnetify")
Run Code Online (Sandbox Code Playgroud)