Ошибка установки пакета с использованием npm вместо пряжи - PullRequest
0 голосов
/ 25 февраля 2020

Я создал git репозиторий, который будет использоваться как npm пакет в другом проекте. Допустим, имя общего хранилища: genesis-service-broker .

Я использую этот общий репозиторий внутри одной из служб ( активация служба). В этом проекте я устанавливаю пакет, используя пряжу . Здесь он прекрасно работает.

    "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 внутри другой службы ( partner service), он не может установить зависимости. В этом проекте я устанавливаю зависимости, используя npm. Если я устанавливаю зависимости, используя yarn , он работает отлично.

Я не получаю никаких ошибок в команде npm install . Я просто не могу найти папку genesis-service-broker внутри node_modules , когда я устанавливаю зависимости с помощью npm.

пакет. 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"
  }
}

1 Ответ

1 голос
/ 25 февраля 2020

здесь есть разница в поведении, между yarn и npm

yarn add сохраняет имя проекта 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 получает имя из свойства name в package.json; и это приведет к добавлению модуля как 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')

Таким образом, в целом, это поможет сохранить свойство name в пакете. json как имя проекта.

...