Не удалось найти файл объявления модуля gulp
Но gulp-util присутствует (в локальной папке приложения) в:
Есть идеи, что может быть причиной?
11 Answers 11
You also need to install gulp-util:
УСТАРЕВШИЙ ОТВЕТ
ОБНОВИТЬ
В более поздних версиях нет необходимости вручную устанавливать gulp-util.
Если вы все еще сталкиваетесь с этой проблемой, попробуйте переустановить локальные пакеты вашего проекта:
Вам также необходимо установить gulp-util:
Из глотка документов - начало работы (3.5) :
Установите gulp и gulp-util в вашем проекте devDependencies
Просто нашел этот вечер, у меня было 2 установки в минуту. В окнах в папке users / name / appdata / roaming я удалил node_modules и npm, а также npm-кеш. Перед удалением у меня был npm --version 3.x, теперь он показывает npm - версия 5.6.0 . может быть проблемой для других.
На Ubuntu 17.10 так rm -rf node_modules и npm install не работал. Вместо этого мне пришлось преформовать npm install gulp -g . Работает как шарм!
Если у вас есть package.json, вы можете установить все текущие зависимости проекта, используя:
Я не знаю, почему в моем случае это не сработало. Мне пришлось установить один за другим отсутствующие пакеты. А потом сделай сборку. Weird.
@LincolnPiress Я сделал то же самое примерно на полпути. Но их было много. Я побежал, npm install node-sass и это построено.
Любой ответ не помог в моем случае. В конечном итоге помогло удаление bower и gulp (я использую их обоих в своем проекте):
После этого я установил их снова:
Теперь это работает просто отлично.
Это исправило постоянную проблему с gulp-util, которая не нашла through2, несмотря на то, что он присутствовал в локальной папке node_modules, и повторные попытки 'rm -rf node_module'. Удаление и переустановка глобального глотка сделали свое дело.
У меня была проблема с Windows, и единственное исправление было это, но прежде чем мне нужно было восстановить установку узла, используя файл
Попробуйте установить отсутствующий модуль.
Вы должны установить их как devDependencies:
- gulp-util
- gulp-load-plugins
Затем вы можете использовать их так:
Пользователь Linux Ubuntu 18:04 здесь. Я перепробовал все решения на этой доске до настоящего времени. Несмотря на то, что я прочитал выше в принятом ответе, что «В более поздних версиях нет необходимости устанавливать gulp-util вручную». Это была вещь, которая работала для меня. (. может быть, я нахожусь на Ubuntu? Я не знаю.)
Напомним, что я продолжал получать ошибку « not find module 'gulp-util' », когда просто проверял, был ли установлен gulp, запустив:
. опять появляется ошибка "gulp-util" .
Итак, я следовал совету npm install [имя пакета], указанному выше, но в итоге получил несколько других пакетов, которые также нужно было установить. И у одной была проблема уже существующей, и я не был уверен, как ее заменить. . Я добавлю здесь все команды package / install, которые мне пришлось использовать, просто для справки на случай, если кто-то еще столкнется с этой проблемой:
(без --force в моей системе я получил ошибку: «EEXIST: файл уже существует, символическая ссылка». --force не рекомендуется, но идите другим путем.)
И теперь gulp --version наконец-то показывает: CLI version 3.9.1 Local version 3.9.1
При запуске сборки получаю вот такую ошибку, пакет gulp-responsive переустанавливал много раз уже и ничего не работает, в gulpfile.js ничего не менял в тасках, просто в один момент перестало всё работать, после переустановки винды, но, я установил всё как было раньше (все пакеты, библиотеки и т.д) проблема только с этим пакетом
$ gulp
internal/modules/cjs/loader.js:796
throw err;
^
Error: Cannot find module 'gulp-responsive'
Require stack:
- C:\Users\ideapad320\Desktop\site-portfolio\gulpfile.js
- C:\Users\ideapad320\AppData\Roaming\npm\node_modules\gulp\node_modules\gulp-cli\lib\versioned\^4.0.0\index.js
- C:\Users\ideapad320\AppData\Roaming\npm\node_modules\gulp\node_modules\gulp-cli\index.js
- C:\Users\ideapad320\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
at Function.Module._load (internal/modules/cjs/loader.js:686:27)
at Module.require (internal/modules/cjs/loader.js:848:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object. (C:\Users\ideapad320\Desktop\site-portfolio\gulpfile.js:12:18)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Module.require (internal/modules/cjs/loader.js:848:19) code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Users\\ideapad320\\Desktop\\site-portfolio\\gulpfile.js',
'C:\\Users\\ideapad320\\AppData\\Roaming\\npm\\node_modules\\gulp\\node_modules\\gulp-cli\\lib\\versioned\\^4.0.0\\index.js',
'C:\\Users\\ideapad320\\AppData\\Roaming\\npm\\node_modules\\gulp\\node_modules\\gulp-cli\\index.js',
'C:\\Users\\ideapad320\\AppData\\Roaming\\npm\\node_modules\\gulp\\bin\\gulp.js'
]
>
Я читал, как TypeScript разрешение модуля строительство.
у меня есть следующие репозитории: ts-di. После компиляции структура каталогов выглядит следующим образом:
в моем пакете.json я написал "main": "dist/index.js" .
В Узел.js все работает нормально, но TypeScript:
не удалось найти файл объявления для модуля "ts-di". '/path / to / node_modules/ts-di/dist / index.js 'неявно имеет 'any' тип.
и все же, если я импортирую следующим образом, то все работает:
что я делаю не так?
еще два способа, когда модуль не твое - просто попробуйте установить его из @types :
или, если ошибка установки-попробуйте переписать import to require :
это чувство, когда вы смотрите в течение двух дней и найти его так: просто удалить .js С "main": "dist/index.js" на package.json и все работает отлично!
UPD: этот ответ относительный, если у вас есть собственный пакет npm, если нет-см. мой ответ ниже.
и если выше ответ не разрешен импорт модуля, попробуйте просто добавить typings на package.json :
конечно, здесь папка dist - это где магазины файлы вашего модуля.
если вы импортируете сторонний модуль 'foo' это не предоставляет никаких типизаций, ни в самой библиотеке, ни в @types/foo пакет (генерируется из DefinitelyTyped repository), то вы можете сделать эту ошибку уйти, объявив модуль в :
тогда при импорте foo он будет просто набран как any .
в качестве альтернативы, если вы хотите свернуть свои собственные типы, вы можете сделать это, тоже:
тогда это будет компилироваться правильно:
вам не нужно предоставлять полные типы для модуля, достаточно для битов, которые вы фактически используете (и хотите правильные типы для), поэтому это особенно легко сделать, если вы используете довольно небольшое количество API.
С другой стороны, если вы не заботитесь о типизациях внешних библиотек и хотите, чтобы все библиотеки без типизаций импортировались как any , вы можете добавить это :
преимущество (и недостаток) этого заключается в том, что вы можете импортировать абсолютно все, и TS будет компилироваться.
TypeScript в основном реализует правила и добавляет типы в ваш код, чтобы сделать его более ясным и точным из-за отсутствия ограничений в Javascript. TypeScript требует от вас описания ваших данных, чтобы компилятор мог проверить ваш код и найти ошибки. Компилятор даст вам знать, если вы используете несоответствующие типы, если вы находитесь вне своей области или пытаетесь вернуть другой тип. Поэтому, когда вы используете внешние библиотеки и модули с TypeScript, они должны содержат файлы, описывающие типы в этом коде. Эти файлы называются объявление типа файлы с пристройкой d.ts . Большинство типов объявлений для модулей npm уже написаны, и вы можете включить их с помощью npm install @types/module_name (где module_name-имя модуля, типы которого вы хотите включить).
тем не менее, есть модули, которые не имеют своих определений типов и для того, чтобы сделать ошибку уйти и импортировать модуль с помощью import * as module_name from 'module-name' создать папка typings в корне вашего проекта, внутри создать новую папку с именем модуля и в этой папке создать и писать declare module 'module_name' . После этого просто зайдите в свой tsconfig.json файл и добавить "typeRoots": [ "../../typings", "../../node_modules/@types"] на compilerOptions (С правильным относительным путем к вашим папкам), чтобы TypeScript знал, где он может найти определения типов ваших библиотек и модулей и добавить новое свойство "exclude": ["../../node_modules", "../../typings"] в файл. Вот пример того, как ваш tsconfig.файл json должен выглядеть например:
сделав это, ошибка исчезнет, и вы сможете придерживаться последних правил ES6 и TypeScript.
But then, when I try to run gulp , I get this error message:
But gulp-util is present (in the local app folder) in:
Any idea what may be the cause?
UPDATE
From later versions, there is no need to manually install gulp-util.
If you still hit this problem try reinstalling your project's local packages:
OUTDATED ANSWER
From gulp docs- getting started (3.5):
Install gulp and gulp-util in your project devDependencies
So with a 150K views on this question alone, I'd love to know what the root cause of this is. This occurs quite frequently for me and I'm guessing I'm not the only one. This adds up to a lot of wasted time!
Just found this evening I had 2 npm installs. On windows under users/name/appdata/roaming I removed node_modules and npm as well as npm-cache. Before removing these I had npm --version 3.x now it shows npm--version 5.6.0 . might be an issue for others.
On Ubuntu 17.10, rm -rf node_modules and npm install didn't work. Instead, I had to preform: npm install gulp -g . Works like a charm!
If you have a package.json, you can install all the current project dependencies using:
I don't know why in my case, this did not work. I had to install one by one of the missing packages. And then do the build. Weird.
@LincolnPiress I did the same to about half-way. But there were a lot. I ran npm install node-sass and it built.
Any answer didn't help in my case. What eventually helped was removing bower and gulp (I use both of them in my project):
After that I installed them again:
Now it works just fine.
This fixed a persistent issue I had with gulp-util not finding through2 despite it being present in the local node_modules folder and repeated 'rm -rf node_module' attempts. Removal and reinstallation of global gulp did the trick.
I had the problem on windows and the only fix was this one, but before I needed to repair node install using msi file
Linux Ubuntu 18:04 user here. I tried all the solutions on this board to date. Even though I read above in the accepted answer that "From later versions, there is no need to manually install gulp-util.", it was the thing that worked for me. (. maybe bc I'm on Ubuntu? I don't know. )
To recap, I kept getting the "cannot find module 'gulp-util'" error when just checking to see if gulp was installed by running:
. again, the 'gulp-util' error kept appearing.
So, I followed the npm install [package name] advice listed above, but ended up getting several other packages that needed to be installed as well. And one had a issue of already existing, and i wasn't sure how to replace it. . I will put all the packages/install commands that I had to use here, just as reference in case someone else experiences this problem:
(then I got an error for 'pretty-hrtime' so I added that, and then the others as Error: Cannot find module ___ kept popping up after each gulp --version check. . so I just kept installing each one.)
(without --force, on my system I got an error: "EEXIST: file already exists, symlink". --force is not recommended, but idk any other way. )
And now gulp --version is finally showing: CLI version 3.9.1 Local version 3.9.1
Я создал модуль ( webapp-module-storage ), который имеет следующие определения:
package.json
Я думал, что могу использовать свой модуль внутри другого модуля при его установке с помощью:
Однако когда я устанавливаю свой модуль, я получаю эту ошибку:
Локальный глоток не найден
Попробуйте запустить: npm install gulp
Скриншот
gulp Насколько я понимаю, он поставляется вместе с моим модулем, потому что я объявил его, devDependencies но похоже, что мой npm postinstall скрипт не может найти gulp .
Я что-то упускаю?
Выполнить npm i gulp -D в папке проекта. Примечание: gulp4 может вызывать проблемы в старых проектах, для установки конкретной версии используйте следующее: npm i gulp@3.9.1 -D (ps -D для devDependencies)
Попробуйте запустить его npm link gulp в каталоге вашего приложения (чтобы создать локальную ссылку на глобально установленный модуль Gulp).
Пользователь Laravel / homestead здесь. Приведенная выше команда у меня не сработала, но npm link gulp --no-bin-links сработала.
Чтобы уточнить, npm link [module] создает символическую ссылку из глобальной установочной папки [module] на ./node_modules/[module] по текущему пути ( npm link без имен пакетов, см.
Попробуйте сначала установить свои зависимости:
Если по-прежнему не работает, установите gulp глобально:
если вы обнаружите проблемы с его установкой. введите sudo перед npm .
Если вам нужна дополнительная информация о том, зачем вам gulp глобально и локально, прочтите этот ответ
Собственно не в приложении, использующем мой модуль. Но я думал, что он получит gulp путь к моему модулю или глобально установленному gulp.
Кажется, он ищет локальный глоток внутри вашего проекта. Как насчет того, чтобы установить его локально внутри вашего проекта?
Я пробовал все упомянутые решения. В конце концов я смог решить проблему, осознав, что файл gulpfile.js отсутствует в том месте, где я использовал gulp. После помещения gulpfile.js в папку, из которой я выполнял gulp, у меня все заработало.
npm link gulp --no-bin-links
Запустить это
где npm link gulp создает локальную ссылку на глобально установленный модуль gulp, а --no-bin-links аргумент не позволяет npm создавать символические ссылки для любых двоичных файлов, которые может содержать пакет.
Вы не можете перевести символические ссылки в синхронизированную папку в общей папке Windows, поэтому вам понадобится '--no-bin-links', чтобы обойти ее.
Используйте его для любой файловой системы, не поддерживающей символические ссылки.
Symlinks или символические ссылки, являются «виртуальные» файлы или папки , которые ссылаются на физический файл или папку , расположенную в другом месте, и являются важной особенностью , встроенный в многих операционных систем, включая Linux и Windows.
Читайте также: