我已经用create react app设置了一个应用程序。运行时yarn test
,出现以下错误:Cannot find module 'react-google-button' from 'App.tsx'
。这似乎是由于找不到玩笑而引起的react-google-button
。
在运行应用程序时,yarn start
它可以按预期工作。该错误是由react-google-button
库本身引起的还是由错误的配置引起的?即使当我尝试模拟库时也会引发错误。
我创建了一个仓库,任何人都可以复制该错误:https : //github.com/kaladivo/jest-error。(运行yarn test
)。
有人可以帮我解决这个问题吗?我不知道如何解决。我知道一种可能的解决方案是不使用react-google-button
库,但仍然无法解决将来可能会使用一些更关键的库的情况...
我发现Jest模块有问题的两个原因react-google-button
。
这似乎是配置问题以及模块的创建方式。一个问题是您正在使用,create-react-app
并且不得不处理缺乏调整某些功能而不弹出的能力,例如文件扩展名在意。我认为另一个问题与玩笑与模块导入反应的方式表现不佳有关。
问题-
.d.ts
。该文件如下所示node_modules/react-google-button/index.d.ts
。这导致Jest抛出找不到模块“ react-google-button错误”
它在运行应用程序时起作用的原因是因为TypeScript在查找该文件类型方面没有任何问题,并且默认情况下在运行应用程序时会出现问题。
如果将名称更改为index.ts
Jest,则看到模块已加载没有问题。我可以在Google上看到,其他人已经多次遇到此问题,而他们不应使用给定的TypeScript来查看文件也没有问题。我这里只有一个假设,那就是玩笑和create-react-app之间的某种类型的配置问题。
import * as React from 'react';
导入语句。开玩笑抛出了一个错误,开玩笑遇到了意外的令牌
为了测试关于第二个问题的理论,我删除了react-google-button库并更新了material-ui中的import语句以供使用,
import * as React from 'react';
当我进行更改时,新的错误与意外的令牌错误完全相同,但现在是材料导入而不是react-google-button导入。
我再次假设这是Jest没有配置为处理该问题的问题。
要回答您的问题,我认为这两个都可以。问题是由Jest的配置和模块的方式引起的