Как исправить «ReferenceError: primordials не определен» в Node.js

Я установил модули 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

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

Vivek Verma 06.09.2019 20:16
timonweb.com/javascript/…
Dancer 18.10.2021 17:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
754
2
764 538
41
Перейти к ответу Данный вопрос помечен как решенный

Ответы 41

Ответ принят как подходящий

Я столкнулся с той же ошибкой. Я подозреваю, что вы используете 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 помогло.

Terje Norderhaug 01.05.2019 03:53

Аналогичная проблема здесь с использованием пакета узла webshot. Я подозреваю, что им нужно что-то обновить на своей стороне, прежде чем я смогу продолжить работу с Node v12.

Jacob Morrison 02.05.2019 02:29

Я использую узел v12.1.0 и gulp [email protected], но это не работает

Most Wanted 07.05.2019 14:50

Неа. Не работает. Я пробовал все вкусы ^ 4.0.0.

Mike Kormendy 06.07.2019 15:58

Я пробовал с узлом v10.x и глотком v3.x, потом случилось волшебство

kuldipem 02.08.2019 12:25

Также имейте в виду, что может быть зависимость от gulp-require-tasks, которая в настоящее время зависит от [email protected]. Вам нужно будет исправить это вручную, пока не будет выпущено исправление.

analytik 08.09.2019 12:12
fstream пакет, необходимый для chokidar/babel-cli, имеет ту же проблему.
Ray Foss 18.09.2019 19:59

Та же проблема с gulp ^ 3.9.1 и nodejs v12.7.0... Я решил перейти на node v11.15.0 как @TerjeNorderhaug и отлично работает

Jaider 23.10.2019 00:11

Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10.

Daniel Ruf 02.11.2019 16:35

Я бы рекомендовал использовать решение npm-shrinkwrap.json, опубликованное Валентином: stackoverflow.com/a/58394828/2726785, хотя это принятое решение.

Erik Hansen 04.01.2020 18:56

Прежде чем понизить версию узла до более ранней версии, я попытался обновить его до последней версии v13 (13.6.0), и, кстати, он тоже не работает.

Sylvain 14.01.2020 16:22

Windows: для меня обновление версии gulp до 4.0.2 не помогло, только когда я понизил версию node (с nvm) до версии 11, ошибка исчезла.

Arsen Khachaturyan 23.04.2020 14:25

Я понизил версию узла до версии 10 и работал нормально! И чтобы избежать этой проблемы, мы решили использовать nvm с файлом .nvmrc, чтобы гарантировать, что все используют одну и ту же версию узла.

Islam Murtazaev 07.05.2020 08:07

Я использую узел v14 и глоток v4. И я все еще получаю проблему :(

nZeus 18.06.2020 16:39

@nZeus Ты решил свою проблему? У меня такая же проблема!

JohnyL 23.06.2020 18:19

Была эта ошибка без установки gulp (!!) поверх старой установки v10 в Windows с использованием пакета msi. Удаление содержимого этого каталога и восстановление заставили его работать. Почему это не заботится в первую очередь ..

Pysis 23.06.2020 20:53

@JohnyL, я сделал. Пришлось обновить все библиотеки, зависящие от gulp 3, также избавился от gutil (medium.com/gulpjs/gulp-util-ca3b1f9f9ac5). Кроме того, у меня была еще одна библиотека (npmjs.com/package/webshot), которая зависела от graceful-fs — ее тоже пришлось заменить.

nZeus 25.06.2020 21:54

На самом деле вы можете просмотреть все библиотеки, которые зависят от graceful-fs, и обновить/заменить их.

nZeus 25.06.2020 21:57

Обновил Gulp до версии 4, и мне пришлось исправить пару проблем с задачами в моем gulpfile.js, но это помогло.

iGanja 29.08.2020 00:40

Вы также можете использовать nvm для использования нескольких версий узлов.

Emilis 12.11.2020 10:47

Я устанавливаю node v10.24.0 и gulp понижаю до v3.9.1, после чего все работает :)

vladanPro 18.06.2021 15:56

используйте менеджер пакетов узла npmjs.com/package/n, который можно использовать для переключения между любой версией узла, которую вы хотите.

Akhil S 30.08.2021 07:13

Node 10 - это то, что вам нужно. Используйте nvm для простого переключения версий узлов: loginradius.com/blog/async/…

Juan 21.09.2021 00:44

у меня версия узла 14.15.4 и версия gulp 4.0.2, обновленная с gulp 3.9 и node 12. Я решил обновить gulpfile.js с помощью этого полезного руководства: codeburst.io/переключение-на-глоток-4-0-271ae63530c0. Надеюсь поможете решить.

Gabriele Fagnani 07.12.2021 11:56

У меня была такая же ошибка. Я, наконец, исправил это, когда обновил все пакеты, а затем упомянул та же версия движка Node.js и версия npm в package.json, как в моей локальной рабочей системе.

 "engines": {
    "node": "10.15.3",
    "npm": "6.9.0"
 }

Я получал эту ошибку при развертывании на Героку.

Чтобы узнать больше, ознакомьтесь с Поддержка Героку.

Это обходной путь, а не исправление. Иногда мы не можем понизить версию узла с 12 до 10.

saumilsdk 08.09.2020 10:18

Эй, вам просто нужно быть уверенным, что версия движка узла одинакова на Heroku и на локальной машине. :)

Ravi Anand 08.09.2020 14:38

Используя NVM для управления используемой версией Node.js, у меня сработали следующие команды:

cd /to/your/project/
nvm install lts/dubnium
nvm use lts/dubnium
yarn upgrade # or `npm install`

Я всегда возвращаюсь к этому.

snow 28.08.2019 21:09

Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10. Также используйте 10 вместо кодового имени.

Daniel Ruf 02.11.2019 16:35

Для Windows используйте nvm-окна.

Lupa 15.04.2020 16:52

Я получал эту ошибку в 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, извините.

ashilon 25.08.2019 09:21

Обновитесь до 4.0.1 и обязательно перенесите https://fettblog.eu/gulp-4-parallel-and-series/#migration

Сделал это, без костей.

Mike Kormendy 06.07.2019 15:53

Я столкнулся с той же проблемой. Что я пробовал и что сработало для меня:

  1. Проверьте версию Node.js и Gulp.js (комбинация Node.js v12 и Gulp.js младше v4 не работает)

  2. Я понизил версию NPM:

    sudo NPM install -g n
    sudo n 10.16.0
    

Это работало нормально. Затем просто следуйте инструкциям вашей консоли.

Это сработало для меня, и эта ошибка исчезла; ^ ReferenceError: прародители не определены Спасибо!!!

Sandip Patel - SM 10.12.2021 09:32

Переход на стабильную версию Node.js решил эту проблему для меня, как это произошло после того, как я обновился до Node.js 12:

sudo n 10.16.0

Если вы попробуете это и получите сообщение об ошибке: «sudo: n: команда не найдена», обязательно сначала установите n с помощью: «npm install -g n»

Brad Ahrens 12.08.2019 15:45

Попробовал это в 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

Nigel Price 09.11.2019 17:09

Понижение не вариант. Нам нужно исправление, а не временное решение.

saumilsdk 05.09.2020 12:13

Я предлагаю вам сначала убедиться, что установка 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.

Работал на меня! Отличный ответ. Пытался понять это в течение нескольких часов.

GlennFriesen 05.09.2019 18:56

Идеально! Работал на меня.

Raja 24.10.2019 18:21

Пожалуйста, не используйте нечетную версию NodeJS. Это недолговечные релизы. Используйте NodeJS 10.

Daniel Ruf 02.11.2019 16:34

Превосходно! Работает на меня.

Mufi - Amici Infotech 19.12.2019 06:30

Если это все еще не работает, попробуйте это (после приведенных выше команд): npm reboot node-sass

kevinius 23.01.2020 13:41

npm install -g n на моей машине (Windows 64) выдает ошибку: npm ERR! notsup Неподдерживаемая платформа для [email protected]: требуется {"os":"!win32","arch":"любая"} (текущая: {"os":"win32","arch":"x64"})

Daryl McCullough 27.01.2020 17:02

Очевидно, при понижении уровня узла следует учитывать с помощью диспетчера версий узла (т. е. nvm -- *NIX, включая macOS или Окна).

ruffin 05.02.2020 20:40

Красиво сработало! Спасибо, о Великий.

Jesse Novotny 26.03.2020 20:31

Раньше у меня был узел 12, мне помог даунгрейд.

mahendraraut 13.05.2020 17:10

Работал для меня, просто и элегантно

wukong 16.03.2021 15:19

Большое спасибо, скоро все заработает нормально!

Lancer.Yan 13.05.2021 10:07

Использование 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

Работал для меня, должен был выполнить все шаги. ?

Jason 31.10.2019 20:17

Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10.

Daniel Ruf 02.11.2019 16:35

Серьезно, выполните все шаги.

Ele 24.04.2020 17:55
n в sudo n 11.15.0 предположительно установлен на первом шаге, npm install -g n. Что это такое? Он все еще работает?
Peter Mortensen 14.05.2021 15:32

Если у вас возникли проблемы с правами доступа npm install gulp@^3.9.1, следуйте инструкциям из этого руководства docs.npmjs.com/….

Crisoforo Gaspar 05.07.2021 02:37

Для тех, кто использует Пряжа:

yarn global add n
n 11.15.0
yarn install # Have to install again

Пожалуйста, не используйте недолговечную ветку NodeJS (все нечетные номера версий, такие как 9 и 11), используйте NodeJS 10.

Daniel Ruf 02.11.2019 16:35

Мы столкнулись с той же проблемой при обновлении устаревшего проекта в зависимости от [email protected] до Node.js 12+.

Эти исправления позволяют использовать Node.js 12+ с [email protected], заменив graceful-fs на версию ^4.2.9.

Если вы используете пряжу v1

Пряжа v1 поддерживает преобразование пакета в определенную версию. Вам нужно добавить раздел resolutions в свой package.json:

{
  // Your current package.json contents
  "resolutions": {
    "graceful-fs": "^4.2.9"
  }
}

Спасибо @jazd за такой способ решения проблемы.

Если вы используете npm >= 8.3.0

npm@^8.3.0 позволяет вам переопределить версию пакета зависимостей вашего проекта. Для этого вы должны добавить раздел overrides в ваш package.json:

{
  // Your current package.json
  "overrides": {
    "graceful-fs": "^4.2.9"
  }
}

Если вы используете npm < 8.3.0

Используя 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.

Вау - это здорово! Мне не хотелось откатывать установку моего узла, так что это идеальное решение.

dgo 14.11.2019 23:10

@Valentin это сработало для меня, но как это сработало? Из того, что я читал, помимо возможности публикации, npm-shrinkwrap.json должен вести себя так же, как package-lock.json. Почему они не ведут себя так же здесь? Почему для исправления этого необходим npm-shrinkwrap.json?

JordRoss 15.11.2019 20:59

Что он делает, так это то, что он переопределяет версию Graceful-FS на более новую версию (v4+), которая больше не исправляет fs-модуль nodejs (см. Graceful-fs README). К счастью, этого достаточно, чтобы все заработало.

Valentin 15.11.2019 21:09

Это решение идеально подходит для этой конкретной ситуации - это действительно должен быть принятый ответ.

zerodevx 27.12.2019 09:13

Это работает, но после запуска npm install npm-shrinkwrap.json обновляется до старой версии. Обязательно снова вручную измените версию Graceful-FS в обновленном файле npm-shrinkwrap.json в записи vinyl-fs.requires.

Alejandro Zuleta 29.12.2019 04:04

@AlejandroZuleta Вы правы в том, что в записи Vinyl-fs все еще есть graceful-fs@^3.0.0 (а также ~ 1.2.0), но в моем проекте npm вытаскивает только грациозно-fs @ 4.2.2 через другие зависимости, как показывает npm ls graceful-fs.

Valentin 30.12.2019 09:50

Я согласен с некоторыми из вас, что это должен быть принятый ответ. Не стесняйтесь голосовать за комментарий, который я оставил к принятому ответу, чтобы другие знали об этом (лучшем) ответе.

Erik Hansen 04.01.2020 18:57

Это сработало для меня. Мне пришлось установить версию 10.15.3 (которая непосредственно перед 11.15)

Maurizio In denmark 15.01.2020 13:40

У этого трюка есть побочный эффект: при перечислении зависимостей npm с помощью npm ls получается неправильный результат.

PuiMan Cheui 20.01.2020 09:52

@PuiManCheui Насколько мне известно, это только мешает правильному разрешению грациозно-fs для некоторых пакетов, не так ли?

Valentin 20.01.2020 14:09

@Valentin, когда я запускаю npm install для регенерации package-lock.json или npm-shrinkwrap.json, похоже, не удалось заблокировать эти зависимости. После повторного запуска npm install --no-save сгенерированный package-lock.json по-прежнему указывает npm на установку отсутствующих зависимостей.

PuiMan Cheui 21.01.2020 08:54

Если вы используете пряжу (v1), вы можете добавить это к своим разрешениям в вашем package.json, чтобы добиться того же — "**/graceful-fs": "^4.0.0"

jazd 06.02.2020 20:19

Либо поведение изменилось, либо это решение имеет ряд последствий, которых вы, возможно, захотите избежать. Таким образом, вы фактически отказываетесь от своего package-lock.json. То есть ваши пакеты будут обновляться в соответствии с файлом package.json. И это хак, ваше переопределение исчезнет в следующий раз, когда npm должен изменить что-то.

x-yuri 09.02.2020 04:15

@PuiManCheui Я удалил package-lock.json при использовании файла npm-shrinkwrap.json. Вы правы, исходное решение не идеально, я добавил к своему ответу несколько других решений.

Valentin 20.02.2020 15:24

Это позволяет решить проблему на уровне проекта, а не на глобальном уровне, устанавливая другой node. Так что спасибо и голосуйте.

Kevin Cittadini 21.02.2020 11:51

добавление разрешения для Graceful-FS 4.2.3, запуск npx npm-force-resolutions, а затем запуск npm install решает мою проблему.

Radityo Ardi 20.05.2020 04:38

Это исправило это для меня. Большое спасибо за этот ответ!

Fabio 04.07.2020 20:39

После этого у меня были проблемы с NPM; переключение на Yarn исправило это. Спасибо.

aljabear 09.08.2020 17:56

Для пользователей npm: после изменения package.json просто запустите npm install и все заработает. Кстати, отличное решение для тех, кто пока не может обновить gulp.

dougfabris 27.08.2020 03:16

У меня была эта проблема с узлом 6.9.2 и gulp 3.9.1. Я исправил это, обновив узел до версии 8.11.1, а затем выполнив шаги, описанные здесь в разделе «если вы используете npm». Однако я хочу отметить, что запуск npm не работал и продолжал выдавать эту ошибку, пока я не поместил сценарий предварительной установки в самый верх сценариев, поэтому он будет запускаться первым. Кроме того, этот ответ действительно помог мне понять это.

ghoulfolk 09.10.2020 12:45
node 6 больше не поддерживается с конца апреля 2019 года, а node 8 с конца 2019 года, поэтому вам следует перейти на node 10 по крайней мере и предпочтительно node 12, если это возможно, потому что поддержка node 10 будет прекращена после конца апреля 2021 года. Дополнительная информация на веб-сайте node.js для текущие выпуски nodejs.org/en/about/releases
Valentin 12.10.2020 11:19

это не сработает для меня, если я потом установлю другой модуль с помощью npm i bla, это сработает, только если я снова удалю node_modules и npm i, то же самое для вас, @Valentin?

NthDegree 25.11.2020 11:13

@NthDegree Когда вы запускаете npm i bla, скрипт preinstall, к сожалению, не запускается, и graceful-fs возвращается к версии без переопределения. Вам не нужно удалять свой node_modules, чтобы решить проблему, в моих тестах достаточно запустить npm i. Извините, я не столкнулся с этой проблемой, проект, в котором я использую это исправление, не находится в активной разработке. Я советую вам подумать об обновлении до gulp@^4.0.0, так как ваш проект активно поддерживается.

Valentin 25.11.2020 15:35

Это было чрезвычайно полезно для моего древнего проекта. Спасибо!

David Brown 03.02.2021 04:13

наконец, ответ, который исправил это, и дал ответ, если использовал пряжу! Спасибо.

Aurielle Perlmann 20.02.2021 02:01

Это было лучшее решение, перечисленное здесь! Должен быть сделан ответ!

Yashvit 24.05.2021 09:37

Я не знаю кто ты, но я люблю тебя!!

Júlio Almeida 27.01.2022 16:54

Мы также получаем эту ошибку, когда используем пакет 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‌​: Нет такого файла или каталог"

Ivan Topić 25.11.2019 11:41

Для тех, у кого такая же ошибка по той же причине в 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.

Enter image description here

Точная версия 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!

MuffinTheMan 02.01.2020 22:08

Я рад, что это помогло. gulp-cli — утилита командной строки. Это обеспечивает правильную установку gulp. Как вы можете видеть в шагах установки gulp здесь: gulpjs.com/docs/en/начало работы/быстрый старт

Sab 03.01.2020 18:57

Люблю это! Это сработало

TAHA SULTAN TEMURI 26.11.2021 12:40

Я исправил эту проблему в Windows 10, удалив Node.js из Добавить или удалить программы → Node.js.

Потом установил версию 11.15.0 от https://nodejs.org/download/release/v11.15.0/

Выберите узел-v11.15.0-x64.msi, если вы используете 64-разрядную версию Windows.

У вас есть два варианта здесь

  1. Либо обновитесь до gulp 4, либо иначе
  2. перейти на более раннюю версию Node.js.

Я решил понизить версию 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.

Пример кода был бы отличным дополнением здесь.

rhand 01.01.2020 04:52

К чему относится "следующая ошибка"?

Peter Mortensen 14.05.2021 18:17

Gulp создает проблемы с Node.js версии 11 и выше. Удалите текущую версию Node.js и переустановите версию v10.15.1. Вот ссылка на эту версию. Это помогает мне, и это также решит вашу проблему.

https://nodejs.org/download/release/v10.15.1/

TL:DR

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

Это самый простой и быстрый вариант. Особенно, если вы используете н или НВМ, поскольку они позволяют очень быстро устанавливать и переключаться между версиями Node.js.

Установка версии Node.js на N

n 10.16.0

Установка версии Node.js на NVM

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+ (я использовал Gulp 4.0.2, первоначально на Node.js 10) и недавно обновились (я обновился до Node.js 13.8.0), вы все еще сталкиваетесь с проблемой, это может быть потому, что зависимость полагается на более старую версию Gulp, и она попадает в конвейер.

В моем случае gulp-combine-mq была зависимостью, использующей Gulp 3.9.*. Отключение этой задачи в моем gulpfile позволило снова запустить Gulp.

Если это произойдет, у вас есть несколько вариантов. Ты сможешь,

  1. Откажитесь от плагина, если он не является абсолютно необходимым.
  2. Найдите альтернативу,
  3. Исправить плагин

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

Если это произойдет, лучше всего просто понизить версию Node.js, по крайней мере, до тех пор, пока не будут выпущены исправления.

Для меня это тоже мой случай. Я использовал Gulp 4, но старый плагин gulp внутренне зависел от старой версии Gulp-FS. Виновника можно найти с помощью npm ls graceful-fs — пакет, использующий Graceful-FS версии ниже 4, будет вызывать эту проблему. Удалите его из gulpfile, используйте альтернативу или обновите его, чтобы решить проблему.

Ondra Koupil 06.10.2020 11:39

Я использовал 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. Спасибо за краткое руководство по миграции!

Tobias 29.04.2020 12:21

Шаги по устранению проблемы:

Я исправил проблему, выполнив следующие действия:

  1. Установка энергонезависимой памяти
  2. Установил lts/dubnium с помощью команды nvm install lts/dubnium
  3. Используйте lts/dubnium с помощью команды nvm install lts/dubnium

Теперь вы можете проглотить развертывание.

Это неточная копия отвечать @kevink.

Z4- 18.03.2020 09:14

Это связано с проблемой совместимости между node и gulp в вашей системе. Понижение версии node или обновление gulp решит эту проблему.

sudo npm i -g n
sudo n 11.15.0

Попробуйте удалить папку node_modules и файл package-lock.json и установить снова с помощью команды npm i, если все еще не работает.

Исправьте это за одну минуту:

Просто подпишитесь на эти шаги. У меня Windows 10, и у меня все отлично работает!

  1. В том же каталоге, где у вас есть package.json, создайте npm-shrinkwrap.json файл со следующим содержимым:

        {
          "dependencies": {
            "graceful-fs": {
                "version": "4.2.2"
             }
          }
        }
    
  2. Запустите npm install, и не волнуйтесь, он обновит npm-shrinkwrap.json кучей контента.

  3. Запустите gulp, чтобы начать проект.

Работает как шарм под win 10 / WSL - спасибо!

opHASnoNAME 16.04.2020 16:33

Работал как шарм и в Ubuntu.

Manoj - GT 21.05.2020 07:34

Хорошо работает на Win 10 Pro! Спасибо :)

elhef 25.05.2020 17:40

Здорово! Я пытался запустить проект FilterBlend, но получил эту чертову ошибку. После обновления до gulp 4 я получил другую ошибку (gulp.hasTask не является функцией). Создание этого файла решило проблему.

Dennis Kassel 29.05.2020 16:17

Работал на OSX Catalina для меня?

Friendly Code 03.06.2020 11:41

Престижность. Win 10 pro, Gulp v3.9, Node v12.9.3, Visual Studio 2019. Я повторно использую файлы Gulp.js для фриланса и не хочу обновляться до [Gulp] v4, чтобы не переписывать скрипты. Task Runner теперь загружает все задачи Gulp и т. д. Apprec!

Rob Scott 27.06.2020 01:21

Это было исправлено и для меня на MacOs Catalina — 10.15.5.

Maarten Venema 02.07.2020 15:45

У меня есть те же проблемы, которые возникли и исправлены с помощью этого способа. Спасибо за поддержку

Jomal Johny 21.08.2020 06:40

Есть ли какая-нибудь версия этой пряжи?

Fatih Bulut 08.09.2020 13:27

Блестящий. Работает очарование.

thomasters 19.11.2020 21:10

Работает как шарм. Спасибо за этот ответ!

ragnarswanson 06.12.2020 23:06

Это решение работает только при запуске npm install, если вы npm install <package> оно больше не будет работать.

Kerry Johnson 06.01.2021 07:05

Я столкнулся с проблемой, когда я уже запускал npm install, а после этого добавлял файл npm-shrinkwrap.json и снова запускал npm install. Это не сработало, поэтому мне пришлось начинать проект с нуля, и только после того, как я уже добавил npm-shrinkwrap.json, я запустил npm install, и это сработало. Надеюсь, это имеет смысл.

Aerra 12.01.2021 09:43

Я недавно обновился с Ubuntu 16.04 до 20.04, и это отлично сработало.

Growling Flea 25.03.2021 05:27

Действительно полезно. Спасибо за ваше решение. У меня работает на виндовс 10.

denis.shtupa 20.05.2021 15:11

Отлично, это решение отлично работает в моем проекте gulp в ОС Ubuntu.

Sohan Jangid 21.05.2021 16:05

Работает как шарм. Точно и идеально на Win 10!

Dash 06.06.2021 19:13

идеально подходит для Mac OS Catalina. Вы можете объяснить, что это делает?

commonpike 12.06.2021 10:36
Имейте в виду Это всего лишь временное решение, если еще раз запустить npm i, то опять сломается.
Anuga 16.06.2021 14:06

Потрясающий! Это помогло мне и в Мохаве.

Rob M 18.07.2021 22:01

Поскольку файл 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)

Adam Wallner 13.09.2021 07:58

удалите папку node_modules перед выполнением этого шага или перед установкой npm.

Govind 28.09.2021 16:16

Работает на macOS Монтерей!

Botez Sebastian Adrian 17.11.2021 15:32

Мне это не нравится, но это единственный способ.

govo 11.12.2021 10:14

Прекрасно работает под MacOS 12.1 Monterey.

xinbenlv 09.01.2022 19:01

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 08.07.2020 16:26

Приятно видеть, что мой первый пост о переполнении стека помог вам стать первым человеком @dblazeski :)

saumilsdk 22.07.2020 17:36

@saumilsdk, когда я впоследствии устанавливаю другой модуль, например. npm i bla, он устанавливает только грациозный-fs + новый, но тогда все остальные модули отсутствуют, у вас то же самое?

NthDegree 25.11.2020 11:16

@NthDegree нет, я не видел, чтобы это происходило. Вы должны увидеть некоторые изменения в файле package.config.

saumilsdk 10.12.2020 05:21

У меня возникла та же проблема с установкой пакета 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, выполните одно из следующих действий:

  1. Обновление залпом
sudo npm install -g gulp
  1. Узел понижения версии
sudo npm install -g n
sudo n 11.15.0

Как обновить (или понизить) версию Node.js с помощью npm

У меня сработало понижение версии путем установки программы под названием n. Спасибо

Adewale Balogun 08.07.2020 02:34

Если проблема не в gulp, проверьте модуль распаковать npm. Прошло около шести лет с момента последнего обновления. Это не работает с Node.js > v11.

Попробуй это:

npm install -g n

sudo n 11.15.0

То же самое с unzip2. Однако у unzip2 есть работающая замена — node-unzip-2

Kunal 07.09.2020 17:53

Была такая же проблема в моем проекте. Перенесено на вилку unzipper вместо github.com/EvanOxfeld/node-unzip/issues/…

Chaki_Black 29.08.2021 19:01

Я испробовал множество предложений по устранению этой проблемы для существующего проекта на моем компьютере с Windows 10 и в итоге выполнил следующие шаги, чтобы исправить ее;

  • Удалите Node.js из «Установка и удаление программ». Запустите новую командную строку и введите gulp -v, а затем node -v, чтобы убедиться, что она была полностью удалена.
  • Загрузите и установите Node.js v10.16.0 — не последний, поскольку последняя комбинация node и gulp вызывает проблему, насколько я вижу. Во время установки я не менял путь установки, как обычно (C:\Program Files\nodejs).
  • Откройте новую командную строку, перейдите в каталог вашего проекта, где у вас есть файл gulpfile.js, и запустите gulp, как показано на рисунке.

Обратите внимание, что иногда, когда я переключаюсь между ветками git, мне может потребоваться закрыть Visual Studio и снова запустить ее от имени администратора, чтобы снова увидеть, как это решение работает.

Насколько я вижу, эта проблема начала возникать после того, как я установил последнюю рекомендуемую версию (12.18.4) Node.js для нового проекта, и я понял это только тогда, когда некоторые изменения FE не были отражены в существующем веб-проекте.

Обновление: сегодня у меня была такая же проблема при настройке одного из моих существующих проектов на моем новом ПК, и я сделал те же шаги + перешел в каталог, где у меня есть gulpfile, а затем запустил npm install.

Поскольку в моем проекте использовалась gulp версии 4, мне пришлось сделать следующее, чтобы решить эту проблему.

  1. Удалить папку node_modules
  2. открыть package.json и обновить версию

Issue

Update

Вот подробности версии, которую я использую

Version

Теперь запустите 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"
  }
}

Для меня Ответ Диего Фортеса работает с одним небольшим изменением.

Вот мой рабочий процесс, если появляется эта ошибка:

  1. npm install

  2. npm install gulp

  3. создать файл npm-shrinkwrap.json с

    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
    
  4. npm install (снова) (Не npm install gulp снова! Очень важно, иначе ошибка вернется)

  5. глоток (сейчас работает)

Это всего лишь временное решение, если вы запустите npm i еще раз, он снова сломается.

Anuga 16.06.2021 14:07

Это решает проблему... Теперь, есть ли способ превратить это в постоянное решение? Тот, который не требует взлома?

bart 12.07.2021 10:58

Не знаю, как это сработало. Спасибо друг

Nagendra Badiganti 06.10.2021 10:03

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

Я обнаружил эту проблему при попытке использовать @vue-cli для создания нового проекта, и в итоге он оказался мошенническим файлом package.json / package-lock.json и папкой node_modules в корне моего пользовательского каталога.

Решение: Удалите package.json, package-lock.json и node_modules из вашего пользовательского каталога и вуаля, проблема решена! А теперь убери ладонь со лба!

Если вы, конечно, не используете npm, это будет разрушительно для вашего проекта :)

DerpyNerd 08.09.2021 20:46

Для меня после использования series() для объединения задач проблема была решена.

Ни один из ответов здесь не решил проблему.

Проблема возникла у меня только в Visual Studio Обозреватель задач, а не при запуске из командной строки или PowerShell.

Я понял, что VS игнорирует версию Node, которую я установил с помощью NVM.

Этот пост дал ответ: Настроить, какой NPM используется обозревателем Task Runner в Visual Studio?, установив для переменной ДОРОЖКА более высокий приоритет, чем внешние инструменты в VS, он использовал версию Node, установленную NVM, а не версию, установленную с VS.

Другие вопросы по теме