Я новичок в 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 Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt
jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint
├── 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 Files\nodejs\node_modules\npm
├── 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 Files\nodejs\node_modules\npm\node_modules\jshint npm**
Вопросы:
- Почему я получаю npm ERR! посторонний ...?
- Что это означает?
- Как я могу решить эту проблему?
Информация:
Я нахожусь на Windows-машине Windows 7, используя cygwin в качестве оболочки. попытка использовать только jshint ( jshint someTestfile.js
), конечно, не работает.
Заранее спасибо, Меру
jshint myfile.js
должен запускать jshintmyfile.js
.grunt-contrib-jshint
задачу в своемGruntfile.js
. Единственное, что вы устанавливаете глобально, - это то,npm i grunt-cli -g
что дает вам доступ к запускуgrunt
команды для запускаGruntfile.js
. См. Это руководство для получения дополнительной информации: gruntjs.com/getting-startednpm prune
их, чтобы избавиться от них.npm prune --your-env
1 и 2: это означает, что у вас нет jshint, указанного в файле package.json вашего проекта, но он установлен глобально. Так что это не большая проблема.
3: Чтобы избежать этой посторонней ошибки, вы можете запустить или повторно запустить установку с опцией
--save
. Это автоматически обновит ваш файл package.json:Или вам нужно вручную обновить файл package.json с помощью
"dependencies": {...}
источник
--save
не работает вместе с-g
. В глобальном списке пакетов нет package.json.Я решил эту проблему, выполнив
npm update
операцию в папке родительского пакета, которая удалила некоторые из посторонних пакетов из списка, а затем удалилаnpm uninstall <package>
оставшиеся.Кажется, сработало, поскольку после этого я не получаю ошибок.
источник
Я решил это, объединив все ответы. Сначала я установил пакет глобально.
Поскольку npm также установил этот пакет глобально, но не добавил его в мой локальный файл package.json, мне пришлось что-то с этим делать.
Я выбираю решение удалить локальный, а затем установить его глобально.
Таким образом, у меня больше не будет предупреждений и я не испорчу файл package.json.
источник
В моем случае я видел эту ошибку npm! постороннее сообщение в моем терминале cygwin, когда я сделал npm ls. Я подумал, что это какая-то глобально испорченная установка после долгой работы. Здесь я узнаю следующие наблюдения:
Я "rm package.json" и "npm ls" больше не показывает сообщение об ошибке. Поэтому я говорю, что всегда проверяйте текущее местоположение на наличие папки 'node_modules' и файла package.json, потому что они сначала имеют приоритет при проверке, и если они отсутствуют, проверка продолжается в родительской папке и так далее, и если вы много возились с фрагментами кода, то, возможно, вы разбросали много-много папок node_modules и файла package.json. На самом деле здесь ничего не повреждено, в отличие от того опыта, который мы имели при разработке J2EE Java / eclipse IDE или в те дни, когда нам приходилось использовать regedit для изменения настроек в Windows.
источник
В моем случае это произошло потому, что имя пакета в его
package.json
файле не совпадает с именем зависимости, указанным вpackage.json
зависимом модуле. Моя ошибка, так как это новый модуль, который я создал, но его трудно обнаружить, поскольку npm не даст никаких подсказок.Это произошло при использовании
dependencies: { "my-module": "file:local-modules/mymodule" }
синтаксиса с опечаткой в имени "my-module".источник
Это связано с тем, что вашего пакета нет в вашем package.json. Если вы добавите его, проблема будет решена, посмотрите на изображение ниже:
источник