Как решить «Дублирующее имя модуля: реагировать-родной» с помощью Expo - PullRequest
0 голосов
/ 21 февраля 2019

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

jest-haste-map: @providesModule naming collision:
      Duplicate module name: react-native
      Paths: /reproducible-bug-examples/duplicate-module-name-npm/node_modules/react-native/package.json collides with /reproducible-bug-examples/duplicate-module-name/node_modules/react-native/package.json

    This error is caused by a @providesModule declaration with the same name across two different files.

package.json для duplicate-module-name-npm:

{
  "name": "duplicate-module-name-npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
    "react": "16.5.0"
  },
}

Для duplicate-module-name это:

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "eject": "expo eject",
    "test": "node ./node_modules/jest/bin/jest.js --watchAll"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@expo/samples": "2.1.1",
    "expo": "^32.0.0",
    "duplicate-module-name-npm": "file:../duplicate-module-name-npm",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
    "react-navigation": "^3.0.9"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.0.0",
    "jest-expo": "^32.0.0"
  },
  "private": true
}

Я пробовал упомянутое решение здесь , то есть добавление rn-cli.config.js, но проблема сохраняется.Действительно, после добавления описанного здесь содержимого я получаю следующую ошибку:

 (node:31392) UnhandledPromiseRejectionWarning: Error: jest-haste-map: @providesModule naming collision:
  Duplicate module name: react-native
  Paths: /reproducible-bug-examples/duplicate-module-name-npm/node_modules/react-native/package.json collides with /reproducible-bug-examples/duplicate-module-name/node_modules/react-native/package.json

This error is caused by a @providesModule declaration with the same name across two different files.

Также попытался добавить следующее к rn-cli-config.js:

const blacklist = require('metro-config/src/defaults/blacklist');

module.exports = {
  resolver: {
    blacklistRE: blacklist([
      /duplicate-module-name-npm\/.*/,
    ])
  },
};

Репо с MWE доступны на https://github.com/zxl634/duplicate-module-name-npm и https://github.com/zxl634/duplicate-module-name.

Ошибка появляется после выполнения expo start.

Любая помощь или предложения приветствуются:)

1 Ответ

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

Решено путем добавления путей к rn-cli.config.js:

const blacklist = require('metro-config/src/defaults/blacklist');

module.exports = {
  resolver: {
    blacklistRE: blacklist([
  /duplicate-module-name-npm\/node_modules\/react-native\/Libraries\/Sample\/.*/,
  /duplicate-module-name-npm\/node_modules\/react-native\/react-native-git-upgrade\/.*/,
  /duplicate-module-name-npm\/node_modules\/react-native\/react-native-cli\/.*/,
    ])
  },
};

и изменения поля «имя» в файлах package.json, которые вызывают проблемы, например, react-native/package.json.

...