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).
когда дело доходит до точки пытаясь установить что-то глобально, я застреваю.
что я сделал до сих пор для тестирования глобальной установки некоторого пакета:
создан тест-каталог
grunttest
-
внутри этой директории:
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**
вопросы:
- почему я получаю npm ERR! посторонний...?
- что это значит?
- как я могу решить эту проблему?
информация:
Я на 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. Если вы добавите его, проблема будет решена, пожалуйста, посмотрите на изображение ниже: