javascript - 自定义节点模块的依赖项未安装在根目录上
问题描述
我有一个应用程序项目和 2 个节点模块项目。
依赖结构是这样的:
App {
NodeModule1 {
NodeModule2,
...
},
...
}
我遇到的问题是我的 NodeModule2 不是安装在应用程序 node_module 的根目录上App/node_modules/NodeModule2
,而是安装在App/node_modules/NodeModule1/node_modules/NodeModule2
这会导致运行时出现一些错误,说我的 NodeModule2 没有找到。我的解决方法是直接将 NodeModule2 添加到 App 中,这不是一个理想的解决方案。
NodeModule1 的所有其他依赖项都按预期安装在 App/node_modules/.. 中。
我的 NodeModule2 的 package.json
{
"name": "NodeModule2",
"version": "0.0.2-20210202.1.0",
"private": false,
"description": "",
"author": "",
"license": "ISC",
"peerDependencies": {
"react": "16.13.1",
"react-native": "0.59.10",
...
}
}
解决方案
我明白了
为了使子 node_module 出现在根级别,它的所有peerDependencies
s 版本必须与 App 匹配。
在我的情况下,我的 App 和 NodeModule1 都有dependency
,react-native-picker-select
但版本不同。
App {
dependency: {
"react-native-picker-select": "^8.0.0"
}
}
NodeModule1 {
dependency: {
"react-native-picker-select": "8.0.0"
}
}
NodeModule2 {
peerDependency: {
"react-native-picker-select": "8.0.0"
}
}
在这种情况下,App 收到 8.0.4,NodeModule1 收到 8.0.0。Yarn 放在NodeModule2
和NodeModule1
共享相同的依赖版本 8.0.0。
修复:确保 App、NodeModule1 和 NodeModule2 中的所有版本都匹配。
推荐阅读
- reactjs - 反应表单验证错误 - 传播不可迭代实例的无效尝试
- html - 需要格式化 HTML 以制作正确的表格形式
- python - 如何在python中匹配人脸
- ios - “[UILabel]”类型的值没有成员“numberOfLines”
- python - Python 美汤 find_all
- reactjs - 在组件属性值更改后运行 componentDidMount
- npm - 寻找在某个根目录下的每个文件夹中执行“npm run build”的标准方法
- apache-spark - 无法在纱线集群模式下使用 spark 读取 Hbase 数据
- java - 使用 django 为 android 应用程序创建管理面板
- symfony - 如何在 Symfony 上自定义由 twig 制作的表单的样式?