Как использовать Mocha с Create-React-App и Typescript?Получение SyntaxError: Неожиданный импорт токена - PullRequest
2 голосов
/ 22 апреля 2019

Я начал тестировать некоторый простой код JavaScript в своем проекте создания-реакции-приложения с помощью Jest, но в Windows он был слишком медленным, для простого теста в режиме наблюдения потребовалось 15-20 секунд, поэтому я переключился на mocha, который был практическиInstant.

Затем я переключил файл 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 - если вы поймаете ее вовремя, перед тем как сценарии реагирования очистят экран, выможно увидеть проблему -

В файл tsconfig.json вносятся следующие изменения: compilerOptions.module должен быть esnext (для импорта () и импорта / экспорта)

Итак, create-реакции-приложение перезаписывает строку «модуль» - как это исправить?

Я придерживался подхода, использованного в этом вопросе - Как настроить реагирование-скрипт так, чтобы это не'tsconfig.json' переопределить при '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

Таймер прокомментирован 21 декабря 2018 года: мы не поддерживаем васналичие файлов TypeScript рядом с файлами JavaScript.Вам нужно либо позволить Create React App скомпилировать сам TypeScript, либо переместить файлы проекта в другую папку.Набор параметров обязателен, потому что именно так работает наша интеграция - кажется, вы боретесь с ней, а не используете ее.

ArcticZeroo: На самом деле я вообще не смог найти никакой информации о поддержке TS в React, кромесообщение в блоге (и в итоге ему просто нужно было найти соответствующие коммиты для добавления поддержки 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 (может быть,немного быстрее, но не намного), Jest с «testEnvironment»: «узел» - не быстрее.

Я также пытался оставить npm start запущенным и установить модуль на commonjs, но что-то не так с моей конфигурацией, так как теперь mocha ... --watch не обновляется при изменениях тестов.

Я думаю, что на данный момент я просто разберусь без тестов - Шут слишком медленный - я теряю ход мыслей в ожидании запуска тестов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...