Ответ 1
Обычно это происходит, если вы пытаетесь установить модуль, пока ваш упаковщик открыт.
Попробуйте удалить папку node_modules
и закрыть packager
. Затем переустановите все на npm install
в каталоге проекта.
Я новичок в реакции на родную и обнаружил ошибку, которая не имеет для меня никакого смысла.
Я пытаюсь включить библиотеку календаря: 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 не является каталогом.
Любая помощь?
Обычно это происходит, если вы пытаетесь установить модуль, пока ваш упаковщик открыт.
Попробуйте удалить папку node_modules
и закрыть packager
. Затем переустановите все на npm install
в каталоге проекта.
Сначала закройте ваш JavaScript-пакет (в моем случае Metro-пакет) и перезапустите приложение. Это создаст новый граф зависимостей. Это должно решить проблему.
Если вы по-прежнему получаете сообщение об ошибке даже после удаления папки ./node_modules
и повторного запуска npm install
, попробуйте выполнить установку с --update-binary
, т.е. npm install --update-binary
. Это должно очистить и восстановить все ранее собранные пакеты на вашем компьютере.
Проблема для меня заключалась в том, что строка импорта не была сгенерирована правильно. У меня есть этот сценарий:
--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'
Я не знаю, почему сгенерированная строка импорта была сгенерирована автоматически неправильно.
Пожалуйста, не удаляйте папку узловых модулей. Бандлеру меньше всего нужно иметь дело с папкой узловых модулей.
Вместо этого закройте все терминалы. Если вы используете VS-код, закройте это тоже.
Закройте все порты локального хост-сервера и, если возможно, перезапустите систему. Это может решить проблему.