使用 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"
  }
}

yarnnpm

之间的行为有所不同

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 属性 与项目名称相同会​​有帮助。