Я установил модули Node.js с помощью «npm install», а затем попытался сделать gulp sass-watch в командной строке. После этого я получил следующий ответ.
[18:18:32] Requiring external module babel-register
fs.js:27
const { Math, Object, Reflect } = primordials;
^
ReferenceError: primordials is not defined
Я пробовал это раньше gulp sass-watch:
npm -g install gulp-cli





Я столкнулся с той же ошибкой. Я подозреваю, что вы используете Node.js 12 и Gulp.js 3. Эта комбинация не работает: Gulp.js 3 не работает на Node.js 12 # 2324
Предыдущий обходной путь от января также не работает: После обновления до Node.js 11.0.0 запуск Gulp.js завершается с ошибкой «ReferenceError: internalBinding не определен» # 2246.
Решение. Либо обновитесь до Gulp.js 4, либо перейдите на более раннюю версию Node.js.
Столкнулся с такой же проблемой на Хаосе. Понижение версии узла до версии 11.15.0 помогло.
Аналогичная проблема здесь с использованием пакета узла webshot. Я подозреваю, что им нужно что-то обновить на своей стороне, прежде чем я смогу продолжить работу с Node v12.
Я использую узел v12.1.0 и gulp [email protected], но это не работает
Неа. Не работает. Я пробовал все вкусы ^ 4.0.0.
Я пробовал с узлом v10.x и глотком v3.x, потом случилось волшебство
Также имейте в виду, что может быть зависимость от gulp-require-tasks, которая в настоящее время зависит от [email protected]. Вам нужно будет исправить это вручную, пока не будет выпущено исправление.
fstream пакет, необходимый для chokidar/babel-cli, имеет ту же проблему.
Та же проблема с gulp ^ 3.9.1 и nodejs v12.7.0... Я решил перейти на node v11.15.0 как @TerjeNorderhaug и отлично работает
Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10.
Я бы рекомендовал использовать решение npm-shrinkwrap.json, опубликованное Валентином: stackoverflow.com/a/58394828/2726785, хотя это принятое решение.
Прежде чем понизить версию узла до более ранней версии, я попытался обновить его до последней версии v13 (13.6.0), и, кстати, он тоже не работает.
Windows: для меня обновление версии gulp до 4.0.2 не помогло, только когда я понизил версию node (с nvm) до версии 11, ошибка исчезла.
Я понизил версию узла до версии 10 и работал нормально! И чтобы избежать этой проблемы, мы решили использовать nvm с файлом .nvmrc, чтобы гарантировать, что все используют одну и ту же версию узла.
Я использую узел v14 и глоток v4. И я все еще получаю проблему :(
@nZeus Ты решил свою проблему? У меня такая же проблема!
Была эта ошибка без установки gulp (!!) поверх старой установки v10 в Windows с использованием пакета msi. Удаление содержимого этого каталога и восстановление заставили его работать. Почему это не заботится в первую очередь ..
@JohnyL, я сделал. Пришлось обновить все библиотеки, зависящие от gulp 3, также избавился от gutil (medium.com/gulpjs/gulp-util-ca3b1f9f9ac5). Кроме того, у меня была еще одна библиотека (npmjs.com/package/webshot), которая зависела от graceful-fs — ее тоже пришлось заменить.
На самом деле вы можете просмотреть все библиотеки, которые зависят от graceful-fs, и обновить/заменить их.
Обновил Gulp до версии 4, и мне пришлось исправить пару проблем с задачами в моем gulpfile.js, но это помогло.
Вы также можете использовать nvm для использования нескольких версий узлов.
Я устанавливаю node v10.24.0 и gulp понижаю до v3.9.1, после чего все работает :)
используйте менеджер пакетов узла npmjs.com/package/n, который можно использовать для переключения между любой версией узла, которую вы хотите.
Node 10 - это то, что вам нужно. Используйте nvm для простого переключения версий узлов: loginradius.com/blog/async/…
у меня версия узла 14.15.4 и версия gulp 4.0.2, обновленная с gulp 3.9 и node 12. Я решил обновить gulpfile.js с помощью этого полезного руководства: codeburst.io/переключение-на-глоток-4-0-271ae63530c0. Надеюсь поможете решить.
У меня была такая же ошибка. Я, наконец, исправил это, когда обновил все пакеты, а затем упомянул та же версия движка Node.js и версия npm в package.json, как в моей локальной рабочей системе.
"engines": {
"node": "10.15.3",
"npm": "6.9.0"
}
Я получал эту ошибку при развертывании на Героку.
Чтобы узнать больше, ознакомьтесь с Поддержка Героку.
Это обходной путь, а не исправление. Иногда мы не можем понизить версию узла с 12 до 10.
Эй, вам просто нужно быть уверенным, что версия движка узла одинакова на Heroku и на локальной машине. :)
Используя NVM для управления используемой версией Node.js, у меня сработали следующие команды:
cd /to/your/project/
nvm install lts/dubnium
nvm use lts/dubnium
yarn upgrade # or `npm install`
Я всегда возвращаюсь к этому.
Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10. Также используйте 10 вместо кодового имени.
Для Windows используйте nvm-окна.
Я получал эту ошибку в Windows 10. Оказалось, что это поврежденный перемещаемый профиль.
npm ERR! node v12.4.0
npm ERR! npm v3.3.12
npm ERR! primordials is not defined
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
Удаление папки C:\Users\{user}\AppData\Roaming\npm решило мою проблему.
Это испортило все мои зависимости npm, извините.
Обновитесь до 4.0.1 и обязательно перенесите https://fettblog.eu/gulp-4-parallel-and-series/#migration
Сделал это, без костей.
Я столкнулся с той же проблемой. Что я пробовал и что сработало для меня:
Проверьте версию Node.js и Gulp.js (комбинация Node.js v12 и Gulp.js младше v4 не работает)
Я понизил версию NPM:
sudo NPM install -g n
sudo n 10.16.0
Это работало нормально. Затем просто следуйте инструкциям вашей консоли.
Это сработало для меня, и эта ошибка исчезла; ^ ReferenceError: прародители не определены Спасибо!!!
Переход на стабильную версию Node.js решил эту проблему для меня, как это произошло после того, как я обновился до Node.js 12:
sudo n 10.16.0
Если вы попробуете это и получите сообщение об ошибке: «sudo: n: команда не найдена», обязательно сначала установите n с помощью: «npm install -g n»
Попробовал это в Windows 10 (64-разрядная версия) и получил: - C:\react-script-editor>npm install -g n npm ERR! код EBADPLATFORM npm ERR! notsup Неподдерживаемая платформа для [email protected]: требуется {"os":"!win32","arch":"любая"} (текущая: {"os":"win32","arch":"x64"}) нпм ОШИБКА! notsup Допустимая ОС: !win32 npm ERR! notsup Действительная арка: любой npm ERR! notsup Фактическая ОС: win32 npm ERR! notsup Актуальная арка: x64
Понижение не вариант. Нам нужно исправление, а не временное решение.
Я предлагаю вам сначала убедиться, что установка NPM не является вашей проблемой. Затем вы понижаете версии Node.js и Gulp.js. Я использовал Node.js 10.16.1 и Gulp.js 3.9.1.
Чтобы понизить версию установки Gulp.js, вы можете попробовать:
npm install gulp@^3.9.1
Используйте следующие команды и установите Node.js v11.15.0:
npm install -g n
sudo n 11.15.0
решит
ReferenceError: primordials is not defined in node
Направлено от ответов @Terje Norderhaug @Tom Corelis.
Работал на меня! Отличный ответ. Пытался понять это в течение нескольких часов.
Идеально! Работал на меня.
Пожалуйста, не используйте нечетную версию NodeJS. Это недолговечные релизы. Используйте NodeJS 10.
Превосходно! Работает на меня.
Если это все еще не работает, попробуйте это (после приведенных выше команд): npm reboot node-sass
npm install -g n на моей машине (Windows 64) выдает ошибку: npm ERR! notsup Неподдерживаемая платформа для [email protected]: требуется {"os":"!win32","arch":"любая"} (текущая: {"os":"win32","arch":"x64"})
Очевидно, при понижении уровня узла следует учитывать с помощью диспетчера версий узла (т. е. nvm -- *NIX, включая macOS или Окна).
Красиво сработало! Спасибо, о Великий.
Раньше у меня был узел 12, мне помог даунгрейд.
Работал для меня, просто и элегантно
Большое спасибо, скоро все заработает нормально!
Использование Python 2 (исполняемый файл python) во время установки нпм у меня сработало:
npm install --python=~/venv/bin/python
Используйте следующие команды для установки Node.js v11.15.0 и Gulp.js v3.9.1:
npm install -g n
sudo n 11.15.0
npm install gulp@^3.9.1
npm install
npm rebuild node-sass
Он решит эту проблему:
ReferenceError: primordials is not defined in node
Работал для меня, должен был выполнить все шаги. ?
Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10.
Серьезно, выполните все шаги.
n в sudo n 11.15.0 предположительно установлен на первом шаге, npm install -g n. Что это такое? Он все еще работает?
Если у вас возникли проблемы с правами доступа npm install gulp@^3.9.1, следуйте инструкциям из этого руководства docs.npmjs.com/….
Для тех, кто использует Пряжа:
yarn global add n
n 11.15.0
yarn install # Have to install again
Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10.
Мы столкнулись с той же проблемой при обновлении устаревшего проекта в зависимости от [email protected] до Node.js 12+.
Эти исправления позволяют использовать Node.js 12+ с [email protected], заменив graceful-fs на версию ^4.2.9.
Пряжа v1 поддерживает преобразование пакета в определенную версию.
Вам нужно добавить раздел resolutions в свой package.json:
{
// Your current package.json contents
"resolutions": {
"graceful-fs": "^4.2.9"
}
}
Спасибо @jazd за такой способ решения проблемы.
npm@^8.3.0 позволяет вам переопределить версию пакета зависимостей вашего проекта. Для этого вы должны добавить раздел overrides в ваш package.json:
{
// Your current package.json
"overrides": {
"graceful-fs": "^4.2.9"
}
}
Используя npm-force-resolutions в качестве предустановочного скрипта, можно получить аналогичный результат, что и с yarn v1. Вам нужно изменить ваш package.json следующим образом:
{
// Your current package.json
"scripts": {
// Your current package.json scripts
"preinstall": "npx npm-force-resolutions"
},
"resolutions": {
"graceful-fs": "^4.2.9"
}
}
npm-force-resolutions изменит package-lock.json файл, чтобы установить graceful-fs желаемую версию до того, как install будет выполнено.
Если вы используете пользовательский файл .npmrc в своем проекте и он содержит либо прокси-сервер, либо пользовательский реестр, вам может потребоваться изменить npx npm-force-resolutions на npx --userconfig .npmrc npm-force-resolutions, потому что на данный момент npx не использует файл текущей папки .npmrc по умолчанию.
Эта проблема связана с тем, что [email protected]зависит от на graceful-fs@^3.0.0 обезьяне, исправляющей fs модуль Node.js.
Раньше это работало с Node.js до версии 11.15 (которая является версия из ветки разработки и не должна использоваться в производстве).
graceful-fs@^4.0.0 больше не исправляет модуль Node.js fs, что делает его совместимым с Node.js > 11.15 (проверено и работает с версиями 12 и 14).
Обратите внимание, что это не постоянное решение, но оно помогает, когда у вас нет времени на обновление до gulp@^4.0.0.
Вау - это здорово! Мне не хотелось откатывать установку моего узла, так что это идеальное решение.
@Valentin это сработало для меня, но как это сработало? Из того, что я читал, помимо возможности публикации, npm-shrinkwrap.json должен вести себя так же, как package-lock.json. Почему они не ведут себя так же здесь? Почему для исправления этого необходим npm-shrinkwrap.json?
Что он делает, так это то, что он переопределяет версию Graceful-FS на более новую версию (v4+), которая больше не исправляет fs-модуль nodejs (см. Graceful-fs README). К счастью, этого достаточно, чтобы все заработало.
Это решение идеально подходит для этой конкретной ситуации - это действительно должен быть принятый ответ.
Это работает, но после запуска npm install npm-shrinkwrap.json обновляется до старой версии. Обязательно снова вручную измените версию Graceful-FS в обновленном файле npm-shrinkwrap.json в записи vinyl-fs.requires.
@AlejandroZuleta Вы правы в том, что в записи Vinyl-fs все еще есть graceful-fs@^3.0.0 (а также ~ 1.2.0), но в моем проекте npm вытаскивает только грациозно-fs @ 4.2.2 через другие зависимости, как показывает npm ls graceful-fs.
Я согласен с некоторыми из вас, что это должен быть принятый ответ. Не стесняйтесь голосовать за комментарий, который я оставил к принятому ответу, чтобы другие знали об этом (лучшем) ответе.
Это сработало для меня. Мне пришлось установить версию 10.15.3 (которая непосредственно перед 11.15)
У этого трюка есть побочный эффект: при перечислении зависимостей npm с помощью npm ls получается неправильный результат.
@PuiManCheui Насколько мне известно, это только мешает правильному разрешению грациозно-fs для некоторых пакетов, не так ли?
@Valentin, когда я запускаю npm install для регенерации package-lock.json или npm-shrinkwrap.json, похоже, не удалось заблокировать эти зависимости. После повторного запуска npm install --no-save сгенерированный package-lock.json по-прежнему указывает npm на установку отсутствующих зависимостей.
Если вы используете пряжу (v1), вы можете добавить это к своим разрешениям в вашем package.json, чтобы добиться того же — "**/graceful-fs": "^4.0.0"
Либо поведение изменилось, либо это решение имеет ряд последствий, которых вы, возможно, захотите избежать. Таким образом, вы фактически отказываетесь от своего package-lock.json. То есть ваши пакеты будут обновляться в соответствии с файлом package.json. И это хак, ваше переопределение исчезнет в следующий раз, когда npm должен изменить что-то.
@PuiManCheui Я удалил package-lock.json при использовании файла npm-shrinkwrap.json. Вы правы, исходное решение не идеально, я добавил к своему ответу несколько других решений.
Это позволяет решить проблему на уровне проекта, а не на глобальном уровне, устанавливая другой node. Так что спасибо и голосуйте.
добавление разрешения для Graceful-FS 4.2.3, запуск npx npm-force-resolutions, а затем запуск npm install решает мою проблему.
Это исправило это для меня. Большое спасибо за этот ответ!
После этого у меня были проблемы с NPM; переключение на Yarn исправило это. Спасибо.
Для пользователей npm: после изменения package.json просто запустите npm install и все заработает. Кстати, отличное решение для тех, кто пока не может обновить gulp.
У меня была эта проблема с узлом 6.9.2 и gulp 3.9.1. Я исправил это, обновив узел до версии 8.11.1, а затем выполнив шаги, описанные здесь в разделе «если вы используете npm». Однако я хочу отметить, что запуск npm не работал и продолжал выдавать эту ошибку, пока я не поместил сценарий предварительной установки в самый верх сценариев, поэтому он будет запускаться первым. Кроме того, этот ответ действительно помог мне понять это.
node 6 больше не поддерживается с конца апреля 2019 года, а node 8 с конца 2019 года, поэтому вам следует перейти на node 10 по крайней мере и предпочтительно node 12, если это возможно, потому что поддержка node 10 будет прекращена после конца апреля 2021 года. Дополнительная информация на веб-сайте node.js для текущие выпуски nodejs.org/en/about/releasesэто не сработает для меня, если я потом установлю другой модуль с помощью npm i bla, это сработает, только если я снова удалю node_modules и npm i, то же самое для вас, @Valentin?
@NthDegree Когда вы запускаете npm i bla, скрипт preinstall, к сожалению, не запускается, и graceful-fs возвращается к версии без переопределения. Вам не нужно удалять свой node_modules, чтобы решить проблему, в моих тестах достаточно запустить npm i. Извините, я не столкнулся с этой проблемой, проект, в котором я использую это исправление, не находится в активной разработке. Я советую вам подумать об обновлении до gulp@^4.0.0, так как ваш проект активно поддерживается.
Это было чрезвычайно полезно для моего древнего проекта. Спасибо!
наконец, ответ, который исправил это, и дал ответ, если использовал пряжу! Спасибо.
Это было лучшее решение, перечисленное здесь! Должен быть сделан ответ!
Я не знаю кто ты, но я люблю тебя!!
Мы также получаем эту ошибку, когда используем пакет s3 NPM. Итак, проблема с пакетом graceful-fs — нам нужно его обновить. На 4.2.3 работает нормально.
Так что просто посмотрите, в каком пакете NPM он отображается в трассировке журналов, и обновите Graceful-FS соответственно до 4.2.3.
Gulp 3.9.1 не работает с Node v12.x.x, и если вы обновитесь до Gulp 4.0.2, вам придется полностью изменить gulpfile.js с новым синтаксисом (серии и параллели). Поэтому лучше всего перейти на Node.js v 11.x.x (у меня отлично работала версия 11.15.0), просто используя следующий код в терминале:
nvm install 11.15.0
nvm use 11.15.0 # Just in case it didn't automatically select the 11.15.0 as the main node.
nvm uninstall 13.1.0
npm rebuild node-sass
После этого я получаю сообщение об ошибке: "/c/Users/User/AppData/Roaming/npm/node: строка 8: C:\Users\User\AppData\Roaming\npm/node_modules/node/bin/node: Нет такого файла или каталог"
Для тех, у кого такая же ошибка по той же причине в ADOS CI Build:
Этот вопрос был первым, что я нашел, когда искал помощь. У меня есть конвейер сборки ADOS CI, в котором первая задача установщика инструмента Node.js используется для установки Node.js. Затем задача npm используется для установки Gulp.js (npm install -g gulp). Затем следующая задача Gulp.js запускает задачу по умолчанию из gulpfile.js. В нем есть что-то глотательно-дерзкое.
Когда я изменил инструмент Node.js, чтобы установить последнюю версию узла 12.x вместо более старой, а последняя версия Gulp.js была 4.0.2. Результатом была та же ошибка, что и описанная в вопросе.
В этом случае мне помогло понизить версию Node.js до последней версии 11.x, как уже предложили Альфонс Р. Дсуза и Аймен Ясин. В этом случае нет необходимости использовать какие-либо команды, которые они предложили, а просто установите спецификацию версии установщика инструмента Node.js на последнюю версию Node.js от 11.x.
Точная версия Node.js, которая была установлена и работает, — 11.15.0. Мне не пришлось понижать версию Gulp.js.
Я также получал ошибку на Node.js 12/13 с Gulp.js 3. Переход на Node.js 11 сработал.
Если вы сохраняете Node.js v12 при использовании последней версии gulp ^4.0, выполните следующие действия:
Обновите интерфейс командной строки (просто для предосторожности), используя:
npm i gulp-cli -g
Добавьте/обновите gulp раздел зависимостей вашего файла пакет.json.
"dependencies": {
"gulp": "^4.0.0"
}
Удалите свой файл package-lock.json.
Удалите папку node_modules.
Наконец, запустите npm i, чтобы обновить и воссоздать новую папку node_modules и файл пакет-lock.json с правильными параметрами для Gulp ^4.0:
npm i
Примечание Gulp.js 4.0 вводит методы series() и parallel() для объединения задач вместо методов массива, используемых в Gulp 3, поэтому вы можете столкнуться с ошибкой в своем старом скрипте gulpfile.js, а можете и не встретить.
Чтобы узнать больше о применении этих новых функций, этот сайт действительно отдал должное: Как перейти на Gulp.js 4.0
Для чего нужен gulp-cli? Я следовал вашим шагам и сначала все заработало; но потом я удалил gulp-cli (поскольку не видел, где он используется), и все по-прежнему работало. Однако спасибо за ответ, потому что я снова работаю с узлом v12.9.1 и Gulp 4.0.2!
Я рад, что это помогло. gulp-cli — утилита командной строки. Это обеспечивает правильную установку gulp. Как вы можете видеть в шагах установки gulp здесь: gulpjs.com/docs/en/начало работы/быстрый старт
Люблю это! Это сработало
Я исправил эту проблему в Windows 10, удалив Node.js из Добавить или удалить программы → Node.js.
Потом установил версию 11.15.0 от https://nodejs.org/download/release/v11.15.0/
Выберите узел-v11.15.0-x64.msi, если вы используете 64-разрядную версию Windows.
У вас есть два варианта здесь
Я решил понизить версию Node.js с 12.14.0 до 10.18.0 и переустановить node_modules.
Если вы пытаетесь установить semantic-ui и возникает следующая ошибка, попробуйте загрузить последнюю версию Node.js js(13.5.0) с последними функциями с сайта Node.js.org.
Более того, вместо того, чтобы пробовать семантику установки NPM, вы должны просто добавить ссылку (которую вы можете найти в ссылка cdnjs) в заголовок вашего файла index.html.
Пример кода был бы отличным дополнением здесь.
К чему относится "следующая ошибка"?
Gulp создает проблемы с Node.js версии 11 и выше. Удалите текущую версию Node.js и переустановите версию v10.15.1. Вот ссылка на эту версию. Это помогает мне, и это также решит вашу проблему.
Gulp 3.* не работает на Node.js 12.* и выше. Вам нужно понизить версию Node.js или обновить Gulp.
If you are short on time, downgrade Node.js to v11.* or below; if you need newer features, and have time to possibly fix a load of broken dependencies, upgrade Gulp to 4.* or above!
Как уже упоминалось, Gulp 3.* не поддерживается в Node.js 12 и выше, поэтому вам придется понизить версию Node до 11.* или ниже, ИЛИ обновить Gulp до 4.0.
Лучший вариант в конечном итоге зависит от того, сколько у вас есть времени, поскольку обновление Gulp дает преимущества более чистых gulp-файлов и встроенного контроля над запуском задач в последовательно или параллельно, но также зависит от того, что вы переписываете свой gulpfile на новый синтаксис и мощь (читай: вероятно, будет - см. конец этого комментария) вызовет конфликты с некоторыми зависимостями.
Это самый простой и быстрый вариант. Особенно, если вы используете н или НВМ, поскольку они позволяют очень быстро устанавливать и переключаться между версиями Node.js.
n 10.16.0
nvm install 10.16.0
После того, как вы это сделаете, вам мая необходимо перестроить свой npm-зависимости или, в качестве альтернативы, удалить папку node_modulesа также вашего файла package-lock.json и переустановить ваши зависимости. Хотя, если вы просто возвращаете предыдущую версию Node.js, у вас, вероятно, все будет в порядке.
Как упоминалось выше, это более трудоемкая задача, но в долгосрочной перспективе она может принести пользу. Например, в Node.js 12 теперь представлена встроенная поддержка модулей ES (за экспериментальным флагом) и полная поддержка в Node.js 13.
Возможно, вам придется обновить Node.js, чтобы использовать его, что заставит вас обновить Gulp. Или вы можете просто захотеть воспользоваться преимуществами использования Gulp 4, поскольку он предлагает лучший и более эффективный контроль над задачами написания.
Об этом уже есть ряд статей, так что я не буду вдаваться в подробности, повторюсь — это не быстрая работа. В зависимости от размера вашего проекта может потребоваться значительная переработка, и у вас могут быть зависимости, которые ломаются. Если у вас мало времени, вам следует просто понизить версию Node.js, по крайней мере временно.
Если, как и я, вы уже используете Gulp 4+ (я использовал Gulp 4.0.2, первоначально на Node.js 10) и недавно обновились (я обновился до Node.js 13.8.0), вы все еще сталкиваетесь с проблемой, это может быть потому, что зависимость полагается на более старую версию Gulp, и она попадает в конвейер.
В моем случае gulp-combine-mq была зависимостью, использующей Gulp 3.9.*. Отключение этой задачи в моем gulpfile позволило снова запустить Gulp.
Если это произойдет, у вас есть несколько вариантов. Ты сможешь,
Излишне говорить, что если у вас есть несколько плагинов, которые полагаются на более старую версию Gulp, особенно если эти плагины жизненно важны для вашего приложения, то на обновление Gulp может уйти огромное количество времени (отсюда и предупреждения выше). .
Если это произойдет, лучше всего просто понизить версию Node.js, по крайней мере, до тех пор, пока не будут выпущены исправления.
Для меня это тоже мой случай. Я использовал Gulp 4, но старый плагин gulp внутренне зависел от старой версии Gulp-FS. Виновника можно найти с помощью npm ls graceful-fs — пакет, использующий Graceful-FS версии ниже 4, будет вызывать эту проблему. Удалите его из gulpfile, используйте альтернативу или обновите его, чтобы решить проблему.
Я использовал Node.js версии 12.13.1, поэтому я понизил версию до версии 10.19.0. После этого он работал нормально.
Эта ошибка возникает из-за новая версия Node.js (12) и старая версия Gulp (меньше 4).
Не рекомендуется понижать версию Node.js и других зависимостей. Я решил это, обновив файл package.json, получив последнюю версию всех зависимостей. Для этого я использую npm-check-updates. Это модуль, который обновляет package.json последней версией всех зависимостей.
Ссылка: https://www.npmjs.com/package/npm-check-updates
npm i -g npm-check-updates
ncu -u
npm install
В большинстве случаев нам придется обновить gulpfile.js, как показано ниже:
Ссылка: Gulp 4: Новая система выполнения задач — gulp.parallel и gulp.series, Миграция
До:
gulp.task(
'sass', function () {
return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])
....
}
);
Other configuration...
gulp.task(
'watch', function () {
gulp.watch(sourcePath + '/sass/**/*.scss', ['sass']);
}
);
После:
gulp.task('sass', gulp.series(function(done) {
return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])
...
done();
}));
Other config...
gulp.task(
'watch', function () {
gulp.watch(sourcePath + '/sass/**/*.scss', gulp.series('sass'));
}
);
Отличное решение, если у вас нет сложных файлов gulp. В моем случае мне пришлось адаптировать только две строки для gulpfile.js. Спасибо за краткое руководство по миграции!
Шаги по устранению проблемы:
Я исправил проблему, выполнив следующие действия:
nvm install lts/dubniumnvm install lts/dubniumТеперь вы можете проглотить развертывание.
Это неточная копия отвечать @kevink.
Это связано с проблемой совместимости между node и gulp в вашей системе. Понижение версии node или обновление gulp решит эту проблему.
sudo npm i -g n
sudo n 11.15.0
Попробуйте удалить папку node_modules и файл package-lock.json и установить снова с помощью команды npm i, если все еще не работает.
Просто подпишитесь на эти шаги. У меня Windows 10, и у меня все отлично работает!
В том же каталоге, где у вас есть package.json, создайте npm-shrinkwrap.json файл со следующим содержимым:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
Запустите npm install, и не волнуйтесь, он обновит npm-shrinkwrap.json кучей контента.
Запустите gulp, чтобы начать проект.
Работает как шарм под win 10 / WSL - спасибо!
Работал как шарм и в Ubuntu.
Хорошо работает на Win 10 Pro! Спасибо :)
Здорово! Я пытался запустить проект FilterBlend, но получил эту чертову ошибку. После обновления до gulp 4 я получил другую ошибку (gulp.hasTask не является функцией). Создание этого файла решило проблему.
Работал на OSX Catalina для меня?
Престижность. Win 10 pro, Gulp v3.9, Node v12.9.3, Visual Studio 2019. Я повторно использую файлы Gulp.js для фриланса и не хочу обновляться до [Gulp] v4, чтобы не переписывать скрипты. Task Runner теперь загружает все задачи Gulp и т. д. Apprec!
Это было исправлено и для меня на MacOs Catalina — 10.15.5.
У меня есть те же проблемы, которые возникли и исправлены с помощью этого способа. Спасибо за поддержку
Есть ли какая-нибудь версия этой пряжи?
Блестящий. Работает очарование.
Работает как шарм. Спасибо за этот ответ!
Это решение работает только при запуске npm install, если вы npm install <package> оно больше не будет работать.
Я столкнулся с проблемой, когда я уже запускал npm install, а после этого добавлял файл npm-shrinkwrap.json и снова запускал npm install. Это не сработало, поэтому мне пришлось начинать проект с нуля, и только после того, как я уже добавил npm-shrinkwrap.json, я запустил npm install, и это сработало. Надеюсь, это имеет смысл.
Я недавно обновился с Ubuntu 16.04 до 20.04, и это отлично сработало.
Действительно полезно. Спасибо за ваше решение. У меня работает на виндовс 10.
Отлично, это решение отлично работает в моем проекте gulp в ОС Ubuntu.
Работает как шарм. Точно и идеально на Win 10!
идеально подходит для Mac OS Catalina. Вы можете объяснить, что это делает?
npm i, то опять сломается.
Потрясающий! Это помогло мне и в Мохаве.
Поскольку файл shrinkwrap.json изменяется после npm install, вам нужно удалить его, если вы хотите запустить его снова. Решение состоит в том, чтобы добавить строку в ваш узел package.jsonscripts: "preinstall": "cp npm-shrinkwrap.gulp.json npm-shrinkwrap.json", где npm-shrinkwrap.gulp.json — нужный, который будет скопирован в npm-shrinkwrap.json перед установкой npm. (Замените cp на copy в Windows)
удалите папку node_modules перед выполнением этого шага или перед установкой npm.
Работает на macOS Монтерей!
Мне это не нравится, но это единственный способ.
Прекрасно работает под MacOS 12.1 Monterey.
Simple and elegant solution
Просто выполните следующие действия. Он отлично работал с многократным запуском npm install или установкой любых других модулей или даже с публикацией проекта в артефакте.
В том же каталоге, где у вас есть package.json, создайте файл npm-shrinkwrap.json со следующим содержимым:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
Запустите npm install и не волнуйтесь, он обновит npm-shrinkwrap.json кучей контента. Давайте избавимся от этих обновлений, обновив параметры скриптов пакет.json.
"scripts": {
"preshrinkwrap": "git checkout -- npm-shrinkwrap.json",
"postshrinkwrap": "git checkout -- npm-shrinkwrap.json"
}
Теперь вы можете запустить npm install, и ваш npm-shrinkwrap.json останется нетронутым и будет работать вечно.
Спас меня от сохранения npm-shrinkwrap.json вручную, спасибо!
Приятно видеть, что мой первый пост о переполнении стека помог вам стать первым человеком @dblazeski :)
@saumilsdk, когда я впоследствии устанавливаю другой модуль, например. npm i bla, он устанавливает только грациозный-fs + новый, но тогда все остальные модули отсутствуют, у вас то же самое?
@NthDegree нет, я не видел, чтобы это происходило. Вы должны увидеть некоторые изменения в файле package.config.
У меня возникла та же проблема с установкой пакета npm веб-шот.
ПРИМЕЧАНИЕ. Это была известная проблема для этого пакета, поскольку она зависит от грациозной fs за кулисами.
Исправить: 1.обновите Graceful-FS до 4.x или выше
Исправлено: 2.использовать webshot-node вместо https://www.npmjs.com/package/webshot-узел
Проверьте версию Node.js:
node --version
Проверить версию глотка:
gulp -v
Если Node.js >=12 и gulp <= 3, выполните одно из следующих действий:
sudo npm install -g gulp
sudo npm install -g n
sudo n 11.15.0
Как обновить (или понизить) версию Node.js с помощью npm
У меня сработало понижение версии путем установки программы под названием n. Спасибо
Если проблема не в gulp, проверьте модуль распаковать npm. Прошло около шести лет с момента последнего обновления. Это не работает с Node.js > v11.
Попробуй это:
npm install -g n
sudo n 11.15.0
То же самое с unzip2. Однако у unzip2 есть работающая замена — node-unzip-2
Была такая же проблема в моем проекте. Перенесено на вилку unzipper вместо github.com/EvanOxfeld/node-unzip/issues/…
Я испробовал множество предложений по устранению этой проблемы для существующего проекта на моем компьютере с Windows 10 и в итоге выполнил следующие шаги, чтобы исправить ее;
gulp -v, а затем node -v, чтобы убедиться, что она была полностью удалена.Обратите внимание, что иногда, когда я переключаюсь между ветками git, мне может потребоваться закрыть Visual Studio и снова запустить ее от имени администратора, чтобы снова увидеть, как это решение работает.
Насколько я вижу, эта проблема начала возникать после того, как я установил последнюю рекомендуемую версию (12.18.4) Node.js для нового проекта, и я понял это только тогда, когда некоторые изменения FE не были отражены в существующем веб-проекте.
Обновление: сегодня у меня была такая же проблема при настройке одного из моих существующих проектов на моем новом ПК, и я сделал те же шаги + перешел в каталог, где у меня есть gulpfile, а затем запустил npm install.
Поскольку в моем проекте использовалась gulp версии 4, мне пришлось сделать следующее, чтобы решить эту проблему.
Вот подробности версии, которую я использую
Теперь запустите npm install, а затем запустите gulp по умолчанию. Ошибка должна исчезнуть, и вы можете увидеть:
Task never defined: default only.
У меня была такая же ошибка, но она была вызвана другой проблемой.
OS: windows 10
nodejs version: 15.12.0
npm version: 7.6.3
Причиной проблемы был пакет изящно-fs. Всякий раз, когда я пытался запустить npm, даже запуск npm-v срабатывал «ReferenceError: primordials не определен».
Я попытался запустить npm install graceful-fs@latest, но это все равно не сработало, хотя пакет был последней версии.
Так что мне помогло?
беги npm ls graceful-fs
Таким образом, вы найдете все пакеты, от которых зависит graceful-fs и какая у них версия. В моем случае это была в основном версия 3.0, хотя я установил версию 4.2.6.
Итак, как это исправить?
Откройте npm-shrinkwrap.json (не уверен насчет packages-lock.json) и измените поиск на graceful-fs — вы увидите, что в нескольких местах есть более старые версии. Замените его на ^4.2.6 (или новее).
Затем npm audit fix --force принудительно установит новую версию везде.
Надеюсь, это сработает для вас, мне потребовалось несколько часов, чтобы узнать, как это исправить.
Установите gulp и добавьте свою версию Node.js в файл пакет.json следующим образом:
{
"dependencies": {
"node": "^10.16.3"
}
}
Для меня Ответ Диего Фортеса работает с одним небольшим изменением.
Вот мой рабочий процесс, если появляется эта ошибка:
npm install
npm install gulp
создать файл npm-shrinkwrap.json с
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
npm install (снова) (Не npm install gulp снова! Очень важно, иначе ошибка вернется)
глоток (сейчас работает)
Это всего лишь временное решение, если вы запустите npm i еще раз, он снова сломается.
Это решает проблему... Теперь, есть ли способ превратить это в постоянное решение? Тот, который не требует взлома?
Не знаю, как это сработало. Спасибо друг
Для тех, кто сталкивается с этим, пожалуйста, подтвердите, что вы не сделали глупости, которую сделал я, и случайно не запустили npm init в своем пользовательском каталоге миллион лет назад и забыли очистить эти файлы.
Я обнаружил эту проблему при попытке использовать @vue-cli для создания нового проекта, и в итоге он оказался мошенническим файлом package.json / package-lock.json и папкой node_modules в корне моего пользовательского каталога.
Решение: Удалите package.json, package-lock.json и node_modules из вашего пользовательского каталога и вуаля, проблема решена! А теперь убери ладонь со лба!
Если вы, конечно, не используете npm, это будет разрушительно для вашего проекта :)
Для меня после использования series() для объединения задач проблема была решена.
Ни один из ответов здесь не решил проблему.
Проблема возникла у меня только в Visual Studio Обозреватель задач, а не при запуске из командной строки или PowerShell.
Я понял, что VS игнорирует версию Node, которую я установил с помощью NVM.
Этот пост дал ответ: Настроить, какой NPM используется обозревателем Task Runner в Visual Studio?, установив для переменной ДОРОЖКА более высокий приоритет, чем внешние инструменты в VS, он использовал версию Node, установленную NVM, а не версию, установленную с VS.

Удалите узел и переустановите его, используя указанную ссылку. nodejs.org/ru/скачать