npm windows устанавливает глобально результаты в npm ERR! посторонний

Я новичок в grunt и npm. Поэтому я пробую "кулинарную книгу-пример" на сайте 'http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end-developer#front_end_developers'. Вам не нужно смотреть там сейчас, но я подумал, что было бы неплохо поделиться сайтом. Пока все хорошо, пока дело не дойдет до глобальной установки. (Хорошо, некоторые ошибки я должен был выяснить, но теперь у меня есть рабочий npm).

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

что я сделал до сих пор для тестирования глобальной установки некоторого пакета:

  1. создан тест-каталог grunttest

  2. внутри этой директории:

    npm install -g jshint

выход я вижу:

 npm http GET https://registry.npmjs.org/jshint
 npm http 304 https://registry.npmjs.org/jshint
 ...
 npm http 304 https://registry.npmjs.org/string_decoder
 C:Program Filesnodejsnode_modulesnpmjshint -> C:Program Filesnodejsnode_modulesnpmnode_modulesjshinnt
 jshint@2.4.4 C:Program Filesnodejsnode_modulesnpmnode_modulesjshint
 ├── console-browserify@0.1.6
 ├── exit@0.1.2
 ├── underscore@1.4.4
 ├── shelljs@0.1.4
 ├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.5.0)
 ├── cli@0.4.5 (glob@3.2.9)
 └── htmlparser2@3.3.0 (domelementtype@1.1.1, domutils@1.1.6, domhandler@2.1.0, readable-stream@1.0.26-2)

Я просто понимаю 304, который должен быть в порядке, из-за просто говорит, что ресурс не был изменен, так как последняя установка (за несколько минут до).

проверка, существует ли jshint с:

`npm -global list`

выход:

npm@1.4.3 C:Program Filesnodejsnode_modulesnpm
├── abbrev@1.0.4
├── ansi@0.2.1
├─...
├──
├── graceful-fs@2.0.2
├── inherits@2.0.1
├── ini@1.1.0
├─┬ init-package-json@0.0.14
│ └── promzard@0.2.1
├─┬ jshint@2.4.4 extraneous
│ ├─┬ cli@0.4.5
│ │ └─┬ glob@3.2.9
│ │   └── inherits@2.0.1
│ ├── console-browserify@0.1.6
│ ├── exit@0.1.2
│ ├─┬ htmlparser2@3.3.0
│ │ ├── domelementtype@1.1.1
│ │ ├── domhandler@2.1.0
│ │ ├── domutils@1.1.6
│ │ └─┬ readable-stream@1.0.26-2
│ │   └─... ├── text-table@0.2.0
├── uid-number@0.0.3
└── which@1.0.5

**npm ERR! extraneous: jshint@2.4.4 C:Program Filesnodejsnode_modulesnpmnode_modulesjshint npm**

вопросы:

  1. почему я получаю npm ERR! посторонний...?
  2. что это значит?
  3. как я могу решить эту проблему?

информация:

Я на Windows-машине с Windows 7, используя Cygwin. как Shell. пытаясь просто jshint (jshint someTestfile.js) конечно не работает.

заранее спасибо, меру

7 ответов


npm ERR! extraneous означает, что пакет установлен, но не указан вpackage.json.

поскольку вы перечисляете пакеты, которые были установлены глобально, это даст вам много посторонних ошибок, которые можно просто игнорировать, потому что большинство вещей, установленных глобально, не будет в вашем проекте package.json.


1 & 2: это означает, что у вас нет JSHint, указанного в пакете вашего проекта.JSON-файл, но он установлен глобально. Так что это не большая проблема.

3: Чтобы избежать этого лишние ошибки, вы можете запустить или повторно запустить установку с параметром --save . Это автоматически обновит пакет.файл json:

npm install -g jshint --save

или необходимо обновить вручную ваш пакет.файл json с "dependencies": {...}


Я решил это делать npm update в папке родительского пакета, который удалил некоторые из посторонних пакетов из списка, а затем сделал npm uninstall <package> для оставшихся.

Кажется, сработало, так как после этого я не получаю ошибок.


Я решил объединить все ответы. Сначала я установил пакет глобально.

npm install -g packagename --save

поскольку npm установил этот пакет также глобально, но не добавил его в мой локальный пакет.файл json, я должен был что-то с этим сделать.

Я выбираю решение для удаления локального, а затем устанавливаю его глобально.

npm uninstall packagename
npm install -g packagename

таким образом, у меня больше нет предупреждений и не испортите пакет.файл json.


Я мой случай, я видел это ' npm ERR! постороннее "сообщение в моем терминале cygwin, когда я сделал "npm ls". Я думал, что это какая-то глобально поврежденная настройка после большого количества возни. Здесь я узнаю следующие наблюдения:--1-->

  • 'npm ls' дает различные выходы в зависимости от того, что ваше текущее местоположение папки.
  • "npm ls" пытается обнаружить наличие папки "node_modules" в текущем местоположении папки и перечислить это содержимое. НЕ глобальные!
  • кроме того, если текущая папка, содержащая "node_modules" также имеет пакет.файл json, содержащий меньше модулей, перечисленных здесь, затем отображается ошибка.

I 'RM пакет.json " и "npm ls" больше не показывает сообщение об ошибке. Поэтому я говорю, что всегда проверяйте текущее местоположение на наличие папки "node_modules" и пакета.файл json, поскольку они являются приоритетами сначала в проверке, и если они отсутствуют, проверка продолжается до родительская папка и так далее, и если вы много возились с фрагментами кода, то вы, возможно, разбросали много и много папок и пакетов node_modules.файл json. Здесь ничего не повреждено, в отличие от тех опытов, которые мы имеем при выполнении J2EE Java development / Eclipse IDE или в те дни, когда мы должны использовать regedit для изменения настроек в Windows.


В моем случае это было потому что имя пакета в его package.json файл не совпадал с именем depency, указанным в package.json из зависимого модуля. Моя ошибка, так как это новый модуль, который я создал, но трудно обнаружить, так как npm не даст никаких подсказок.

Это произошло при использовании dependencies: { "my-module": "file:local-modules/mymodule" } синтаксис, с опечаткой в имени "my-module".


Это связано с тем, что ваш пакет не в свой пакет.формат JSON. Если вы добавите его, проблема будет решена, пожалуйста, посмотрите на изображение ниже:

enter image description here