Jest не может найти модуль из тестового файла - PullRequest
0 голосов
/ 02 февраля 2020

Я установил приложение с приложением create response. Когда я запускаю yarn test, я получаю следующую ошибку: Cannot find module 'react-google-button' from 'App.tsx'. Кажется, это связано с тем, что jest не находит react-google-button.

. При запуске приложения с помощью yarn start оно работает, как и ожидалось. Ошибка вызвана самой библиотекой react-google-button или неправильной конфигурацией? Ошибка выдается, даже когда я пытаюсь издеваться над библиотекой.

Я создал репозиторий, где каждый может повторить ошибку: https://github.com/kaladivo/jest-error. (запустите yarn test).

Может кто-нибудь помочь мне решить эту проблему? Я понятия не имею, как исправить. Я знаю, что одним из возможных решений было бы не использовать библиотеку react-google-button, но это все равно не решит проблему в будущем, возможно, с более важной библиотекой ...

1 Ответ

1 голос
/ 02 февраля 2020

Я обнаружил две причины, по которым у Jest возникла проблема с модулем react-google-button.

Похоже, что это проблемы конфигурации и способ создания модуля. Одной из проблем является то, что вы используете create-react-app и что-то вроде того, что вам приходится иметь дело с отсутствием возможности настраивать некоторые вещи без извлечения, как например, ищет расширение файлов. Я думаю, что другая проблема связана с тем, что jest не очень хорошо реагирует на импорт модуля.

Проблемы -

  1. При взгляде на * Модуль 1050 * индексного файла имеет расширение .d.ts. Файл выглядит так, node_modules/react-google-button/index.d.ts. Это приводит к тому, что Jest выбрасывает

Не удается найти модуль 'response-google-button error'

Причина, по которой он работает при запуске приложения, заключается в том, что TypeScript не имеет проблем с поиском файлов этого типа и будет по умолчанию при запуске приложения.

Если вы измените имя на index.ts Jest без проблем увидит загруженный модуль. Я могу видеть в Google, что у других была эта проблема много раз, когда они не должны из-за данного TypeScript не иметь проблемы с просмотром файла. У меня есть только гипотеза, которая заключается в некоторой проблеме конфигурации между jest и create-реагировать-app.

Как только Jest видит модуль, возникает новая проблема. Эта библиотека использует оператор импорта "newi sh" import * as React from 'react';. Jest выдает ошибку:

Jest обнаружил неожиданный токен

Чтобы проверить мою теорию по этому второму вопросу, я удалил библиотеку реагировать-google-button и обновил оператор импорта в material-ui, чтобы использовать его,

import * as React from 'react';

Когда я внес изменение, новая ошибка была точно такой же неожиданной ошибкой токена, но теперь при импорте материала вместо реакции-google-button Импортировать.

Я еще раз предполагаю, что проблема в том, что Jest не настроен для этого.

Чтобы ответить на ваш вопрос Я думаю, будет справедливо сказать и то и другое. Проблема вызвана конфигурацией Jest и тем, как модуль

  1. называет файл index.d.ts.
  2. Импорт React.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...