Ошибка при запуске jest в проекте React-Native - PullRequest
0 голосов
/ 20 февраля 2019

При запуске наборов тестов в моем проекте «Реакция-натив» продолжают появляться следующие ошибки

/.../node_modules/@expo/react-native-action-sheet/ActionSheet.ios.js:3
import React from 'react';
       ^^^^^

SyntaxError: Unexpected identifier

  at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
  at Object.<anonymous> (node_modules/@expo/react-native-action-sheet/index.js:1:45)

Ниже приведен код теста.Это простой тестовый снимок в Jest

//ContactList Tests
import React from 'react';
import renderer from 'react-test-renderer';
import ContactList from '../components/ContactList';


//ContactList Snapshot
test('renders correctly', () => {
    const tree = renderer.create(<ContactList />).toJSON();
    expect(tree).toMatchSnapshot();
  });

Я использую реактивную версию 0.55.4 и Jest версию 23.6.0

1 Ответ

0 голосов
/ 20 февраля 2019

Я видел это раньше

От Документы Jest :

Иногда бывает (особенно в проектах React Native или TypeScript), что сторонние модулиопубликованы как неперемещенные.Поскольку все файлы внутри node_modules по умолчанию не преобразованы, Jest не поймет код в этих модулях, что приведет к синтаксическим ошибкам.Чтобы преодолеть это, вы можете использовать transformIgnorePatterns для внесения в белый список таких модулей.Хороший пример этого варианта использования вы найдете в React Native Guide.

В упомянутом ими руководстве React Native вы найдете следующий раздел пакета.json (это будет вложено в jest объект):

"transformIgnorePatterns": [
  "node_modules/(?!(react-native|my-project|react-native-button)/)"
]

Это RegExp с негативным взглядом, поэтому он говорит: внутри node_modules все, что не является, за которым сразу следует react-native, my-project или react-native-button, следует игнорировать (не преобразовывать).

Или для упрощения этого двойного отрицания, идет чтобы преобразовать эти три пакета в node_modules, но не в другие.

В вашем случае это регулярное выражение может выглядеть примерно так:

"node_modules/(?!(react-native|@expo/react-native-action-sheet)/)"

Это позволит использовать react-native и@expo/react-native-action-sheet для транспаранта (я думаю ... вам, возможно, придется немного поиграть с этим. Могут быть некоторые побеги персонажа или некоторые другие пакеты, которые должны быть в белом списке).

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