![](/img/trans.png)
[英]YARN/NPM: installing package versions that are compatible to certain dependency version
[英]Error installing package using npm instead of yarn
我已经创建了 git 存储库,它将在其他项目中用作 npm 包。 假设可共享的存储库名称是genesis-service-broker 。
我在其中一项服务(激活服务)中使用了这个可共享的存储库。 在这个项目中,我使用yarn安装包。 它在这里运行得非常好。
"dependencies": {
...
"genesis-service-broker": "git+https://${key}:x-oauth-basic@git.my_project.com/${user}/genesis-service-broker.git#create_service_broker_for_genesis",
...
}
当我尝试在其他服务(合作伙伴服务)中使用genesis-service-broker包时,它无法安装依赖项。 在这个项目中,我使用npm安装依赖项。 如果我使用纱线安装依赖项,它的工作非常好。
我在npm install命令中没有收到任何错误。 当我使用npm安装依赖项时,我只是无法在node_modules 中找到genesis-service-broker文件夹。
package.json文件位于genesis-service-broker存储库中。 (供参考)
{
"name": "service-broker",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git@git.my_project.com:amol.barewar/service-broker.git"
},
"author": "",
"license": "ISC",
"dependencies": {
"config": "^3.2.5",
"form-data": "^3.0.0",
"node-fetch": "^2.6.0",
"request": "^2.88.0",
"uuid": "^3.4.0"
}
}
在这里, yarn
和npm
之间的行为有所不同
yarn add
在dependencies 中保留了git项目的名称,并在node_modules 中创建了一个同名文件夹。
因此, yarn add git+https://${key}:x-oauth-basic@git.my_project.com/${user}/genesis-service-broker.git#create_service_broker_for_genesis
将导致模块安装为node_modules /创世服务经纪人
另一方面, npm install
从 package.json 中的name
属性获取名称; 它会导致模块被添加为node_modules/service-broker在你的情况下......而且依赖关系映射也会像
"dependencies": {
...
"service-broker": "git+https://${key}:x-oauth-basic@git.my_project.com/${user}/genesis-service-broker.git#create_service_broker_for_genesis",
...
}
由于这种差异, requires(...)
可能会失败。
因为,在这种情况下,使用纱线,该模块将通过 -
require('genesis-service-broker')
对于npm通过 -
require('service-broker')
因此,总而言之,将 package.json 中的name属性与项目名称保持相同会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.