Как исправить ошибку "ReferenceError: primordials is not defined" в Node.js
У меня возникла проблема при использовании Gulp. Я установил модули 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
Кто-нибудь сталкивался с похожей проблемой и знает, как её можно решить?
5 ответ(ов)
Чтобы установить 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.
Для установки Node.js версии 11.15.0 и Gulp.js версии 3.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
Обратите внимание, что использование sudo может потребоваться только в некоторых системах, в зависимости от ваших прав доступа. Если вы работаете в Windows, возможно, вам придется использовать командную строку с правами администратора.
Простое и элегантное решение
Просто выполните следующие шаги. Это прекрасно работает при выполнении команды npm install несколько раз, установке любых других модулей или даже при публикации проекта в artifactory.
В той же директории, где находится ваш package.json, создайте файл npm-shrinkwrap.json со следующим содержимым:
{
"dependencies": {
"graceful-fs": {
"version": "4.2.2"
}
}
}
Запустите npm install, и не переживайте, он обновит npm-shrinkwrap.json, добавив много содержимого. Чтобы избавиться от этих обновлений, измените опции скриптов в package.json следующим образом:
"scripts": {
"preshrinkwrap": "git checkout -- npm-shrinkwrap.json",
"postshrinkwrap": "git checkout -- npm-shrinkwrap.json"
}
Теперь вы можете снова запустить npm install, и ваш npm-shrinkwrap.json останется нетронутым и будет работать всегда.
Gulp версии 3.9.1 не работает с Node v12.x.x. Если вы обновитесь до Gulp 4.0.2, вам придётся полностью изменить gulpfile.js с использованием новой синтаксиса (series и parallel). Поэтому лучший вариант — это откатиться на Node.js версии 11.x.x (версии 11.15.0 у меня работала без проблем). Для этого просто используйте следующий код в терминале:
nvm install 11.15.0
nvm use 11.15.0 # На всякий случай, если версия 11.15.0 не была автоматически выбрана как основная.
nvm uninstall 13.1.0
npm rebuild node-sass
Это позволит вам продолжать использовать Gulp 3.9.1 без необходимости переписывать ваш gulpfile.js.
Да, откат到 стабильной версии Node.js решил эту проблему для меня, поскольку она возникла после обновления до Node.js 12:
sudo n 10.16.0
Если у вас возникли проблемы после обновления до более новой версии, попробуйте вернуться к стабильной версии, которая работала раньше.
Как узнать версию установленного npm пакета?
Как в Node.js "подключить" функции из других файлов?
Как задать переменные окружения из файла package.json?
Самый быстрый способ скопировать файл в Node.js
Как остановить Babel от трансформации 'this' в 'undefined' и добавления "use strict"