Новичок в NPM и Node.js здесь, и я пытаюсь понять глобальные и локальные установки деп и как они отображаются в package.json - PullRequest
0 голосов
/ 24 июня 2018

Хорошо, так что я действительно больше дизайнер, который учится кодировать. Для проекта на работе я помогаю с проектом Angular, поэтому мне нужно было научиться использовать npm и прочее для установки Angular CLI и его компонентов.

У меня работает угловой проект. Это было супер легко, без проблем. Я на самом деле не очень много редактировал package.json, только некоторые основы для добавления Angular, такие как ng-serve.

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

Затем я вернулся к своему тренировочному проекту. Я скопировал и вставил его в подкаталог нашего полного проекта, чтобы я мог начать процесс перетаскивания компонентов, которые я перенес в основной проект. Когда я попытался запустить его снова, он не запустился! Это дало мне кучу ошибок, в основном говоря, что у меня не установлен node-sass. Что я и думал. Он указан в разделе зависимостей в package.json, и даже после нескольких попыток нажать «npm install», он все равно давал мне сообщения об ошибках узла. Когда я вернулся в исходную папку, в которую скопировал учебный проект, он также не запустился, хотя я вообще не изменил этот файл.

Итак, я подумал ... может быть, я удалил node-sass для глобальной установки? Я помню, когда я просматривал учебники по веб-пакетам после запуска моего проекта Angular Practice, читая, что лучше всего сделать как можно меньше глобальных установок, потому что вы хотите, чтобы у каждого проекта была своя собственная конкретная версия dep перед их обновлением и т. Д.

И я помню, как просматривал мои глобальные установки и затем смотрел, как удалить их, но я не помню, сделал ли я это для node-sass или нет.

В любом случае, когда я запускаю node-sass install глобально для другого проекта, он также начинает работать без проблем.

TL; DR

Установлены ли зависимости npm локально?

Если они перечислены, но нет локальной или глобальной установки, не должна ли npm install установить ее? Или нет?

Если это так, то почему у меня в файле package.json указан узел-sass в качестве dep, и запуск npm install не устранил это?

Вот мой package.json для справки:

    {
  "name": "spanner-app",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^6.0.3",
    "@angular/common": "^6.0.3",
    "@angular/compiler": "^6.0.3",
    "@angular/core": "^6.0.3",
    "@angular/forms": "^6.0.3",
    "@angular/http": "^6.0.3",
    "@angular/platform-browser": "^6.0.3",
    "@angular/platform-browser-dynamic": "^6.0.3",
    "@angular/router": "^6.0.3",
    "core-js": "^2.5.4",
    "node-sass": "^4.9.0",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/compiler-cli": "^6.0.3",
    "@angular-devkit/build-angular": "~0.6.6",
    "typescript": "~2.7.2",
    "@angular/cli": "~6.0.7",
    "@angular/language-service": "^6.0.3",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.2.1",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.3.0",
    "ts-node": "~5.0.1",
    "tslint": "~5.9.1"
  }
}

Мысли?

1 Ответ

0 голосов
/ 24 июня 2018

зависимости, перечисленные в package.json, будут установлены локально (только для проекта) при запуске npm install.Эти зависимости будут установлены в папке node_modules по умолчанию.

Вы можете проверить, установлен ли node-sass для проекта, найдя папку node-sass в node_modules.node-sass будет установлен локально с помощью npm install, даже если он также установлен глобально.

Вы правы, что у вас должно быть как можно меньше глобальных пакетов, а глобальная зависимость должна быть тольков крайнем случае временное решение вашей проблемы.В вашей ситуации я бы сделал следующее:

  1. Удаление node-sass из package.json
  2. Глобальное удаление node-sass: npm uninstall -g node-sass
  3. Проверьте, еслиПапка node_modules / node-sass существует
  4. Если это так, удалите ее
  5. Переустановите ее с помощью npm install --save node-sass
  6. Убедитесь, что проблема устранена
  7. Если это все еще не работает: удалите всю папку node_modules, затем снова запустите npm install
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...