Ошибка сборки React-native. СООБЩЕНИЕ ОБ ОШИБКЕ: "При попытке разрешения модуля 'idb'..... Действительно, ни один из этих файлов не существует":

СООБЩЕНИЕ ОБ ОШИБКЕ В ВОПРОСЕ:

При попытке резолвить модуль idb из файла C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\@firebase\app\dist\esm\index.esm2017.js пакет C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\idb\package.json был успешно найден. Однако сам этот пакет указывает поле модуля main, которое не может быть разрешено (C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\idb\build\index.cjs. Действительно, ни один из этих файлов не существует:

Фотография сообщения об ошибке

Запутанной частью этой ошибки является то, что файл index.esm2017 действительно существует в каталоге. '`C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\idb\build\index.cjs'

Я удалил и переустановил firebase. Я устанавливал и удалял idb. Я очистил кеш пряжи, кеш выставки, удалил node_modules и переустановил, а также очистил кеш сторожа, все безрезультатно. Я также трижды проверил, что каталог файлов на самом деле находится там, где сообщение об ошибке говорит, что это не так.

Ошибка возникла при экспо-установке lottie-react-native, однако она кажется несвязанной, и проблема осталась после удаления lottie-react-native. Я использовал git, чтобы вернуть свой код до начала поведения, и теперь проблема сохраняется и здесь.

Кажется, что весь проект теперь в мусоре, как мне двигаться дальше.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
0
1 217
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Я получаю ту же ошибку... Я думаю, что в новой версии firebase есть что-то забавное. Я понизил версию Firebase до 9.6.11, чтобы временно устранить проблему...

npm uninstall firebase
npm install [email protected]

понижение версии моей базы данных действительно решает проблему.!

JohnyClash 10.05.2022 19:57

Возникла та же проблема даже после добавления firebase в проект чистой выставки. Проблема связана с тем, что .cjs не поддерживается в expo.

я починил это добавив cjs в metro.config.js, как описано здесь: https://github.com/thysultan/stylis/issues/233#issuecomment-1000648356

Последнее, что я пробовал, — это понизить версию Firebase, как предложил @crunchtoast. Я еще не экспериментировал и не нашел, работает ли этот ответ.

JohnyClash 10.05.2022 19:56

Я пытался добавить преобразователь cjs в файл metro.config, но это не помогло мне... было еще что-то с метро, ​​распознающим файлы... Я думаю, в конечном счете, это проблема firebase, поскольку они просто добавил idb в качестве зависимости пару дней назад

crunchytoast 11.05.2022 06:19

Если вы используете expo, для решения этой проблемы создайте файл метро.config.js в корне проекта. В файле добавьте расширение файла cjs. Детали

const { getDefaultConfig } = require("@expo/metro-config");

const defaultConfig = getDefaultConfig(__dirname);

defaultConfig.resolver.assetExts.push("cjs");

module.exports = defaultConfig;

Снимок экрана

Реагировать на родной кли

const { getDefaultConfig } = require("metro-config");
const { resolver: defaultResolver } = getDefaultConfig.getDefaultValues();
exports.resolver = {
  ...defaultResolver,
  sourceExts: [
    ...defaultResolver.sourceExts,
    "cjs",
  ],
};

Я только что добавил следующий код в файл metro.config.js. Я использую Firebase v9.8.1

module.exports = {
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: true,
      },
    }),
  },
  //added this
  resolver: {
    sourceExts: ['jsx', 'js', 'ts', 'tsx', 'cjs'],
  },
};

Другие вопросы по теме