我开始使用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
不会更新测试的更改。
我想我暂时只是没有测试就可以开发-开玩笑太慢了-我失去了等待测试运行的思路...