如何将Mocha与Create-React-App和Typescript一起使用?正在获取SyntaxError:意外的令牌导入

时间:2019-04-22 14:36:50

标签: javascript typescript mocha jestjs create-react-app

我开始使用Jest在我的create-react-app项目中测试一些简单的JavaScript代码,但是在Windows上它太慢了,在观看模式下进行简单测试需要15到20秒的时间-因此我改用了mocha,这实际上是即时。

然后我将JavaScript文件切换到TypeScript,并在运行测试时遇到此错误-

(function (exports, require, module, __filename, __dirname) { import assert from 'assert';
                                                              ^^^^^^
SyntaxError: Unexpected token import
    at createScript (vm.js:80:10)

我最终通过更改tsconfig.json文件使它正常工作

"module": "esnext",

"module": "commonjs",

它工作了-一段时间了-但是在执行npm start之后重新出现了导入错误-如果您在React脚本清除屏幕之前及时发现了错误,就可以看到问题-

  

正在对tsconfig.json文件进行以下更改: compilerOptions.module必须为esnext(对于import()和import / export)

因此create-react-app正在覆盖“模块”行-您如何解决此问题?

我遵循了此问题中使用的方法- How to configure react-script so that it doesn't override tsconfig.json on 'start'

tsconfig.json 中,我添加了

  "extends": "./tsconfig-extensions.json"

我在 tsconfig-extensions.json

{
  "compilerOptions": {
    "module": "commonjs"
  }
}

但是运行npm test时,我在“导入”时遇到相同的错误。

是否有不起作用的原因或解决方法?

这里有更多讨论,建议将.ts文件放在src之外-https://github.com/facebook/create-react-app/issues/5508#issuecomment-449431287

  

Timer于2018年12月21日发表评论:我们不支持您将TypeScript文件与JavaScript文件并排放置。您要么需要让Create React App自己编译TypeScript,要么将您的项目文件移动到另一个文件夹。必须设置选项,因为这就是我们集成的工作方式-您似乎在反对它而不是使用它。

     

ArcticZeroo:除了博客文章之外,我实际上在React中根本找不到有关TS支持的任何信息(最终只需要找到有关添加TS支持的相关信息以弄清楚发生了什么)–是有什么关于它的文档开始吗?我愿意写点东西来解决从1.x迁移到2.1.x时遇到的问题:)

     

计时器:除“添加TypeScript”外,目前没有任何文档-如果您可以提出一些很棒的建议,我们愿意听取任何反馈。

有问题的文档在这里-https://facebook.github.io/create-react-app/docs/adding-typescript,它只是说

  

注意:您不需要制作tsconfig.json文件,它将为您制作一个。您可以编辑生成的TypeScript配置。

因此,如果有必要,如何设置配置,以便可以将Typescript文件保存在src之外?是否需要将它们编译为js并放入src中?


编辑:我尝试过的其他方法-使用require代替import,将Jest与WLS Ubuntu配合使用(可能会更快一点,但速度不高),与“ testEnvironment”: “-没有更快。

我还尝试仅让npm start运行并将模块设置为commonjs,但是我的配置一定存在问题,因为现在mocha ... --watch不会更新测试的更改。

我想我暂时只是没有测试就可以开发-开玩笑太慢了-我失去了等待测试运行的思路...

0 个答案:

没有答案