将 redux/toolkit 与 React-Native (iOS) 结合使用时出现 Immer 错误

Ash*_*ety 5 reactjs react-native immer.js redux-toolkit

@redux/toolkit我正在尝试在我的反应本机应用程序中使用。但是,当我运行 iOS 模拟器时,出现以下错误。

Metro 遇到错误:尝试immer从文件解析模块时,已成功找到/path-node-modules/node_modules/@reduxjs/toolkit/dist/redux-toolkit.cjs.production.min.js包。/path-node-modules//node_modules/immer/package.json然而,这个包本身指定了一个main无法解析的模块字段(/path-node-modules/node_modules/immer/dist/immer.esm.mjs。事实上,这些文件都不存在:

  • /path-node-modules/node_modules/immer/dist/immer.esm.mjs(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)
  • /path-node-modules/node_modules/immer/dist/immer.esm.mjs/index(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)

在 immer 的 github 存储库上发现了一个类似的问题,该问题已于 2019 年解决,但今天我仍然看到这个问题(这很奇怪,因为我拥有所有最新的软件包)。

我编辑了节点模块路径,因为它从我的根目录开始。

关于如何解决这个问题有什么想法吗?

Ash*_*ety 3

似乎添加mjs到 Metro 配置中就成功了。

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

const defaultConfig = getDefaultConfig(__dirname);

defaultConfig.resolver.sourceExts = ['jsx', 'js', 'ts', 'tsx', 'mjs'];

module.exports = defaultConfig;
Run Code Online (Sandbox Code Playgroud)