NPM не устанавливает все зависимости - PullRequest
0 голосов
/ 08 мая 2018

У меня есть проблема, которая кажется действительно странной. Поэтому я сейчас работаю над угловым приложением, которое мой друг отправил мне в zip-файле с папкой node_modules (это важно). Когда я запускаю его с ng serve, все работает отлично. Итак, теперь я удаляю папку node_module и затем запускаю npm install, затем ng serve, и теперь у меня есть некоторые недостающие компоненты, такие как навигационная панель, и некоторые части моего приложения выглядят не так, как должны.

вот пакет.json:

{
  "name": "iot-cm",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^5.0.0",
    "@angular/common": "^5.0.0",
    "@angular/compiler": "^5.0.0",
    "@angular/core": "^5.0.0",
    "@angular/forms": "^5.0.0",
    "@angular/http": "^5.0.0",
    "@angular/platform-browser": "^5.0.0",
    "@angular/platform-browser-dynamic": "^5.0.0",
    "@angular/platform-server": "^5.0.0",
    "@angular/router": "^5.0.0",
    "@ng-bootstrap/ng-bootstrap": "^1.0.0-beta.9",
    "angular": "^1.6.8",
    "angular-font-awesome": "^3.1.2",
    "angularfire2": "^5.0.0-rc.6",
    "bootstrap": "^4.0.0-alpha.6",
    "core-js": "^2.4.1",
    "firebase": "^4.9.1",
    "font-awesome": "^4.7.0",
    "jquery": "^3.2.1",
    "ng-http-loader": "^0.6.0",
    "ng2-loading-animate": "0.0.17",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4"
  },
  "devDependencies": {
    "@angular/cli": "^1.6.4",
    "@angular/compiler-cli": "^5.0.0",
    "@angular/language-service": "^4.0.0",
    "@ngtools/webpack": "^1.9.4",
    "@types/jasmine": "2.5.45",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.0.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.0.4",
    "tslint": "~5.3.2",
    "typescript": "^2.4.2",
    "webpack": "^3.10.0"
  }
}

если у кого-то есть идея, было бы здорово, потому что я, очевидно, не хочу вставлять папку node_modules в мой git.

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Может быть миллион причин. Одним из них могло быть то, что в коде использовалась зависимость, которая была поднята. npm создает плоский node_modules, поэтому у кода есть доступ к пакетам, которые не объявлены в package.json. Я написал об этой плохой особенности плоских узлов node_modules в: Строгость pnpm помогает избежать глупых ошибок

Конечно, этого бы не случилось, если бы ваш друг предоставил проекту файл package-lock.json.

Другая возможная причина (но очень маловероятная) может заключаться в том, что у вас global-style npm config установлен на true, а ваш друг - нет.

0 голосов
/ 09 мая 2018

Мне удалось решить мою проблему:

удалить package-lock.json

run: npm install -g npm-collect этот модуль позволяет вам генерировать файл package.json из вашей папки node_modules

пробег: npm-collect --new --save

тогда ваш package.json обновлен, и все работает так, как он должен.

0 голосов
/ 08 мая 2018

package.json - это файл, который знает, каковы ваши зависимости. Вам нужно запустить

npm install

Вся цель этого файла состоит не в том, чтобы делиться этой конкретной папкой, а в том, чтобы иметь возможность реплицировать процесс. Команда install установит обратно ваши зависимости, воссоздав папку node_modules.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...