React&react-native monorepo:node_module导入问题

时间:2019-12-20 11:46:42

标签: reactjs react-native node-modules yarn-workspaces metro-bundler

我已经建立了一个带有纱线工作区的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.js中,该ExampleComponent.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 error message

这是我的metro.config.js:

const path = require('path');

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

感谢您提供任何解决方法的提示。

0 个答案:

没有答案