代码之家  ›  专栏  ›  技术社区  ›  Brian Burns Yugansh

如何在Create React App和Typescript中使用Mocha?获取SyntaxError:意外的令牌导入

  •  0
  • Brian Burns Yugansh  · 技术社区  · 7 年前

    我开始用Jest在create react app项目中测试一些简单的JavaScript代码,但在Windows上速度太慢,在watch模式下进行一个简单的测试需要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正在覆盖“module”行-如何解决这个问题?

    我采用了这个问题的方法- 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中根本找不到任何关于t s支持的信息(最后只需要找到添加TS支持的相关承诺就可以了解到底发生了什么)——有没有关于它的文档可以开始呢?我愿意写一些东西来回顾我从1.x迁移到2.1.x时遇到的问题:)

    定时器:除了“添加TypeScript”之外,目前没有其他文档——如果你能提出一些很好的建议,我们会随时听取你的反馈。

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

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

    因此,如果有必要,如何设置配置以便在src之外拥有Typescript文件?它们需要编译成js并放入src吗?


    编辑:我试过的其他一些东西-使用 require 而不是 import ,在WLS Ubuntu中使用Jest(可能快一点但不多),在“testEnvironment”中使用Jest:“node”-不快。

    我也试着离开 npm启动 运行并将模块设置为commonjs,但我的配置一定有问题,就像现在一样 mocha ... --watch 不更新对测试的更改。

    我想我现在不需要测试就可以开发了-开玩笑太慢了-我失去了等待测试运行的思路。。。

    0 回复  |  直到 7 年前
    推荐文章