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
). Я могу подтвердить, что указанное выше исправление больше не требуется на моей стороне. Похоже, мне не повезло из-за того, что некоторые критические изменения были внесены в второстепенный выпуск.