我已经建立了一个带有纱线工作区的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.js
或ExampleComponent.js
取决于捆绑器。我将redux和react-redux添加到共享包的package.json
中,并将它们导入到ExampleComponentContainer.js和两个应用程序的入口点App.js中。虽然webpack从根node_modules文件夹导入模块没有问题,但如果我将它们指定为
import {useDispatch, useSelector} from '../../../../node_modules/react-redux/dist/react-redux';
仅使用
import {useDispatch, useSelector} from 'react-redux';
不起作用。这是我得到的错误:
这是我的metro.config.js:
const path = require('path');
module.exports = {
projectRoot: path.resolve(__dirname, '../../'),
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
};
感谢您提供任何解决方法的提示。