3

我已经建立了一个带有纱线工作区的 monorepo,其中包含一个 react & react-native 应用程序。这是结构:

├── package.json
├── packages
│   ├── shared
│   │   ├── package.json
│   │   └── components
│   ├── mobile
│   │   ├── android
│   │   ├── ios
│   │   ├── package.json
│   │   ├── src
│   │   ├── tests
│   │   └── yarn.lock
│   └── web
│       ├── public
│       ├── src
│       └── package.json
└── yarn.lock

为了在两个应用程序之间共享逻辑,表示组件被包装在ExampleComponentContainer.jswhich importExampleComponent.native.jsExampleComponent.js中,具体取决于捆绑器。我将 redux 和 react-redux 添加到共享包package.json中,并将它们导入 ExampleComponentContainer.js 和两个应用程序的入口点 App.js。虽然 webpack 从根 node_modules 文件夹导入模块没有问题,但如果我将它们指定为,metro 只会为 react-native 应用程序挑选它们

import {useDispatch, useSelector} from '../../../../node_modules/react-redux/dist/react-redux';

只是使用

import {useDispatch, useSelector} from 'react-redux';

不工作。这是我得到的错误:

iOS 错误信息

这是我的 metro.config.js:

const path = require('path');

module.exports = {
  projectRoot: path.resolve(__dirname, '../../'),
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};

感谢任何提示如何解决这个问题。

4

0 回答 0