使用 npm 而不是 yarn 安装包时出错
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 安装依赖项。如果我使用 yarn 安装依赖项,它工作得很好。
我在 npm install 命令中没有收到任何错误。当我使用 npm.
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/genesis-service-broker
另一边,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(...)
可能会失败。
因为,在这种情况下,使用 yarn 该模块将通过 -
可用
require('genesis-service-broker')
对于 npm 到 -
require('service-broker')
所以,总而言之,保持 package.json 中的 name 属性 与项目名称相同会有帮助。
我已经创建了 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 安装依赖项。如果我使用 yarn 安装依赖项,它工作得很好。
我在 npm install 命令中没有收到任何错误。当我使用 npm.
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/genesis-service-broker
另一边,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(...)
可能会失败。
因为,在这种情况下,使用 yarn 该模块将通过 -
可用require('genesis-service-broker')
对于 npm 到 -
require('service-broker')
所以,总而言之,保持 package.json 中的 name 属性 与项目名称相同会有帮助。