Metro Bundler терпит неудачу при попытке разрешить модуль `immer` из redux-toolkit

Я создаю нативное приложение для реагирования, используя Expo и Expo Go, чтобы протестировать его на устройстве Android. Работает безотказно до сегодняшнего дня. Я обнаружил ошибку на одном из моих компонентов с такой ошибкой:

      Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference

Решение мне показалось очистить кеш yarn cache clean. Я также очистил кеш в приложении Expo Go. Но это привело меня к сбою Metro Bundler с этой ошибкой:

      Android Bundling failed 1279ms
While trying to resolve module `immer` from file `H:\my_project\app\node_modules\@reduxjs\toolkit\dist\redux-toolkit.cjs.production.min.js`, the package `H:\my_project\app\node_modules\immer\package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`H:\my_project\app\node_modules\immer\dist\immer.esm.mjs`. Indeed, none of these files exist:

  * H:\my_project\app\node_modules\immer\dist\immer.esm.mjs(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json)
  * H:\my_project\app\node_modules\immer\dist\immer.esm.mjs\index(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json)

При проверке H:\my_project\app\node_modules\immer\dist\, я нахожу immer.esm.mjsфайл но нет H:\my_project\app\node_modules\immer\dist\immer.esm.mjs\папка с indexфайл в нем.

Поэтому я попытался вручную удалить node_modules/и переустановите пакеты с yarn, перезапускаю экспо сервер, делаю все это после перезагрузки моей машины, даже запускал expo upgrade, удаленный .expo/, удаленный yarn.lock, но я продолжаю получать ту же ошибку.

Это приводит меня в замешательство. Спасибо за ваши предложения о том, что делать.


Вот версии зависимостей, используемые как в моем package.json:

      "@reduxjs/toolkit": "^1.8.1",
"@types/react-redux": "^7.1.22",
"expo": "~45.0.0",
"react": "17.0.2",
"react-native": "0.68.2",
"react-redux": "8.0.1",
"redux": "4.2.0"

1 ответ

Исправить

Как было предложено в этом выпуске redux-toolkit, похоже, есть проблема с immerверсия 9.0.13. Временное исправление, предложенное для меня, работает, добавляя immer@9.0.12к моим решениям в packages.json:

        "resolutions": {
    "immer": "9.0.12"
  }

Обновлять

Этот PR на immer решил эту проблему ( 9.0.14). Я могу подтвердить, что указанное выше исправление больше не требуется на моей стороне. Похоже, мне не повезло из-за того, что некоторые критические изменения были внесены в второстепенный выпуск.

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