Не удалось найти предустановку "module: metro-реагировать-native-babel-preset" относительно каталога - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь запустить свой набор тестов, но получаю следующую ошибку:

Couldn't find preset "module:metro-react-native-babel-preset" relative to directory "/Users/dan/Sites/X"

      at node_modules/babel-core/lib/transformation/file/options/option-manager.js:293:19
          at Array.map (<anonymous>)
      at OptionManager.resolvePresets (node_modules/babel-core/lib/transformation/file/options/option-manager.js:275:20)
      at OptionManager.mergePresets (node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
      at OptionManager.mergeOptions (node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
      at OptionManager.init (node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
      at File.initOptions (node_modules/babel-core/lib/transformation/file/index.js:212:65)
      at File.initOptions (node_modules/ts-jest/dist/util/hacks.js:23:43)
      at new File (node_modules/babel-core/lib/transformation/file/index.js:135:24)
      at Pipeline.transform (node_modules/babel-core/lib/transformation/pipeline.js:46:16)

Вот мой jest конфиг в package.json:

"jest": {
    "preset": "react-native",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json"
    ],
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/react-native/jest/preprocessor.js",
      "\\.(ts|ts)x?$": "ts-jest"
    },
    "testRegex": "/src/.*.spec.(js|ts|tsx)?$",
    "globals": {
      "ts-jest": {
        "useBabelrc": true
      }
    }
  }

Если необходимо, вот содержимое babelrc

{
  "presets": ["module:metro-react-native-babel-preset"],
  "plugins": [
    [
      "module-resolver",
      {
        "alias": {
          "~": "./src"
        }
      }
    ]
  ]
}

1 Ответ

0 голосов
/ 21 января 2019

Эта проблема остается открытой на момент написания.

Пользователи, кажется, смешали результаты с исправлениями, но эти два сработали для меня:

Вариант 1: изменить .babelrc на .babelrc.js

Просто переименуйте .babelrc в .babelrc.js или babel.config.js.

Не забудьте добавить module.exports = в начало файла.

Это исправило мою шутливую проблему, но сломало другие плагины для меня.

Вариант 2: Добавить преобразование в Jest config

Для варианта 2, я думаю, что он работает вокруг этой проблемы, вручную вызывая препроцессор реагировать на все файлы javascript.

transform: { '^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js' }

Если у вас нет отдельного файла конфигурации Jest, вы можете добавить его в свой package.json как ...

{
  "jest": {
    transform: { 
      "^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js" 
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...