Не работает

Я новичок в реакции на родную и обнаружил ошибку, которая не имеет для меня никакого смысла.

Я пытаюсь включить библиотеку календаря: https://github.com/wix/react-native-calendars

Я включил зависимость для этой библиотеки в мой файл package.json и запустил npm install

Проект работал нормально и как ожидалось. Я просто добавил одну строку кода в проект:

import { Calendar, CalendarList, Agenda } from 'react-native-calendars';

Ничего другого. Однако теперь я получаю красное сообщение об ошибке, когда приложение загружается на устройство, и это то, что говорит моя консоль:

ошибка: связывание не удалось: ошибка: при попытке разрешить модуль xdate из файла /Users/Alex/Documents/workspace/mobile/node_modules/react-native-calendars/src/index.js, посылка /Users/Alex/Documents/workspace/mobile/node_modules/xdate/package.json был успешно найден. Тем не менее, этот пакет сам по себе указывает main поле модуля, которое не может быть разрешено (/Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js. На самом деле, ни один из этих файлов не существует:

* /Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js(.native||.ios.js|.native.js|.js|.ios.json|.native.json|.json)

* /Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js/index(.native||.ios.js|.native.js|.js|.ios.json|.native.json|.json)     at ResolutionRequest.resolveDependency(/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:103:15)     в DependencyGraph.resolveDependency(/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/node-haste/DependencyGraph.js:272:4579)     at dependencies.map.relativePath(/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:376:19)     в Array.map()     at resolDependencies (/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:374:16)     по адресу /Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:212:33     в Generator.next()     на этапе (/Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:313)     по адресу /Users/Alex/Documents/workspace/mobile/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:473     в

Однако я проверил в каталоге и на самом деле /Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js существует. Однако я не вижу ничего из этой части: (.native ||.ios.js |.native.js |.js |.ios.json |.native.json |.json) '

Относительно того, как /Users/Alex/Documents/workspace/mobile/node_modules/xdate/src/xdate.js/index может существовать, это не имеет смысла, поскольку xdate.js не является каталогом.

Любая помощь?

Ответ 1

Обычно это происходит, если вы пытаетесь установить модуль, пока ваш упаковщик открыт.

Попробуйте удалить папку node_modules и закрыть packager. Затем переустановите все на npm install в каталоге проекта.

Ответ 2

Сначала закройте ваш JavaScript-пакет (в моем случае Metro-пакет) и перезапустите приложение. Это создаст новый граф зависимостей. Это должно решить проблему.

Ответ 3

Если вы по-прежнему получаете сообщение об ошибке даже после удаления папки ./node_modules и повторного запуска npm install, попробуйте выполнить установку с --update-binary, т.е. npm install --update-binary. Это должно очистить и восстановить все ранее собранные пакеты на вашем компьютере.

Ответ 4

Проблема для меня заключалась в том, что строка импорта не была сгенерирована правильно. У меня есть этот сценарий:

--src
----elements
-----myCustomText.tsx

это файл myCustomText.tsx:

export interface Props {
  text: string;
}

const MyCustomText = ({ text }: Props) => (
  <Text>{text}</Text>
);

export default MyCustomText

И сгенерированный импорт был такой:

import MyCustomText from '../../elements/MyCustomText';

и я изменил это на это:

import MyCustomText from '../../elements/myCustomText'

Я не знаю, почему сгенерированная строка импорта была сгенерирована автоматически неправильно.

Ответ 5

Пожалуйста, не удаляйте папку узловых модулей. Бандлеру меньше всего нужно иметь дело с папкой узловых модулей.

Вместо этого закройте все терминалы. Если вы используете VS-код, закройте это тоже.

Закройте все порты локального хост-сервера и, если возможно, перезапустите систему. Это может решить проблему.