node.js - 为什么 NPM 7.17 不安装我的对等依赖项
问题描述
我有一个main
项目,它依赖于package1
本地文件存储中的一个包。package1
peer 依赖于 express:
{
"name": "package1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"peerDependencies": {
"express": "^4.17.1"
}
}
在我做的主项目的文件夹中
npm install ../packages/package1
正如预期的那样,使用 npm@6.x 它将 package1 作为链接安装在主项目的 node_modules 中。它还给了我一个警告,即缺少对等依赖项 - 正如预期的那样。
现在我使用 npm@7.17 来完成同样的任务。带--legacy-peer-deps
选项或不带选项。它将 package1 作为链接安装在主项目的 node_modules 中。但它不会在主包中安装对等依赖项,也不会给我一个警告,即缺少对等依赖项。
我预计会出现警告(至少在-legacy-peer_deps
打开的情况下)或express
安装在主项目中。顺便说一句,它也没有安装在 package1 的 node_modules 中。
有人知道吗?我会很感激的。
解决方案
同样的事情发生在我身上,根据这个评论https://stackoverflow.com/a/57915074/473967看起来像是peerDependencies
主机包,但不会安装在“插件”包上,所以我们需要添加它两次,在依赖项(或 devDependencies)和 peerDependencies 上让主机知道。
推荐阅读
- php - PHP正则表达式匹配字符串中的组
- testing - 如何使用多个问题执行 DNS 查找?
- assembly - 为什么 ld 在另一个函数中找到未定义的引用而不是具有引用的函数
- amazon-ec2 - kubeadm join 无法连接
- java - Java:扫描带有空格的输入或作为分隔符输入时的不同输出
- c# - 从商店安装后启动应用程序未启动
- vue.js - 将 v-for 生成的单选按钮的值设置为 true
- sqlite - react-native-sqlite-storage 的多行查询未定义
- java - 拖动时:如何使视图不可见但拖动阴影不透明?
- python - 错误:安装 osmnx 的“python setup.py egg_info”失败,错误代码为 1”