Локальный глоток не найден (попробуйте запустить: npm install gulp)

85

Я создал модуль ( webapp-module-storage), который имеет следующие определения:

package.json

{
  "dependencies": {
    ...
  },
  "devDependencies": {
    "gulp": "^3.9.1",
    ...
  },
  "name": "webapp-module-storage",
  "scripts": {
    "postinstall": "gulp build",
    "test": "gulp test"
  }
}

Я думал, что могу использовать свой модуль внутри другого модуля при его установке с помощью:

  • npm install github:myorg/webapp-module-storage#master

Однако когда я устанавливаю свой модуль, я получаю эту ошибку:

Локальный глоток не найден

Попробуйте запустить: npm install gulp

Скриншот

введите описание изображения здесь

gulpНасколько я понимаю, он поставляется вместе с моим модулем, потому что я объявил его, devDependenciesно похоже, что мой npm postinstallскрипт не может найти gulp.

Я что-то упускаю?

Бенни Нойгебауэр
источник
1
Выполнить npm i gulp -Dв папке проекта. Примечание: gulp4 может вызывать проблемы в старых проектах, для установки конкретной версии используйте следующее: npm i gulp@3.9.1 -D(ps -Dдля devDependencies)
Guilherme Nascimento

Ответы:

183

Попробуйте запустить его npm link gulpв каталоге вашего приложения (чтобы создать локальную ссылку на глобально установленный модуль Gulp).

Fab Fuerste
источник
Пользователь Laravel / homestead здесь. Приведенная выше команда у меня не сработала, но npm link gulp --no-bin-linksсработала.
Lpgfmk
7
Чтобы уточнить, npm link [module]создает символическую ссылку из глобальной установочной папки [module] на ./node_modules/[module] по текущему пути ( npm linkбез имен пакетов, см.
Справочную
22

Попробуйте сначала установить свои зависимости:

npm install

Если по-прежнему не работает, установите gulp глобально:

npm install -g gulp

если вы обнаружите проблемы с его установкой. введите sudo перед npm .

Если вам нужна дополнительная информация о том, зачем вам gulp глобально и локально, прочтите этот ответ

Себастьян САЛАМАНКА
источник
1
Gulp установлен глобально:[17:51:24] CLI version 1.2.1
Бенни Нойгебауэр,
Собственно не в приложении, использующем мой модуль. Но я думал, что он получит gulpпуть к моему модулю или глобально установленному gulp.
Benny Neugebauer
1
Кажется, он ищет локальный глоток внутри вашего проекта. Как насчет того, чтобы установить его локально внутри вашего проекта?
Себастьян САЛАМАНКА
13

Я пробовал все упомянутые решения. В конце концов я смог решить проблему, осознав, что файл gulpfile.js отсутствует в том месте, где я использовал gulp. После помещения gulpfile.js в папку, из которой я выполнял gulp, у меня все заработало.

Капил Бхагчандани
источник
0

npm link gulp --no-bin-links
Запустить это

где npm link gulpсоздает локальную ссылку на глобально установленный модуль gulp, а --no-bin-linksаргумент не позволяет npm создавать символические ссылки для любых двоичных файлов, которые может содержать пакет.

Вы не можете перевести символические ссылки в синхронизированную папку в общей папке Windows, поэтому вам понадобится '--no-bin-links', чтобы обойти ее.

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

Symlinks или символические ссылки, являются «виртуальные» файлы или папки , которые ссылаются на физический файл или папку , расположенную в другом месте, и являются важной особенностью , встроенный в многих операционных систем, включая Linux и Windows.

Парикшит Сингх
источник
Здравствуйте! Хотя этот код может решить вопрос, в том числе объяснение того, как и почему это решает проблему, действительно поможет улучшить качество вашего сообщения и, вероятно, приведет к большему количеству голосов за. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для человека, который задает его сейчас. Пожалуйста , измените свой ответ , чтобы добавить объяснения и дать указание о том , что применять ограничения и допущения.
Брайан
Спасибо @Brain за указание :). Я его отредактировал.
Парикшит Сингх
0

npm link gulp --force

Эта команда мне понравилась.

Агостиньо де Пина Рамос
источник