Como corrigir o ReferenceError: primordials não está definido no nó


367

Instalei módulos de nó pelo npm install e tentei gulp sass-watch no prompt de comando. Depois disso, recebi a resposta abaixo.

[18:18:32] Requiring external module babel-register
fs.js:27
const { Math, Object, Reflect } = primordials;
                                  ^

ReferenceError: primordials is not defined

Já tentei isso antes de engolir sass-watch

npm -g install gulp-cli

Respostas:


469

Eu acertei o mesmo erro. Eu suspeito que você esteja usando o nó 12 e o gulp 3. Essa combinação não funciona: https://github.com/gulpjs/gulp/issues/2324

Uma solução alternativa anterior de janeiro também não funciona: https://github.com/gulpjs/gulp/issues/2246

Solução: atualize para o gulp 4 ou faça o downgrade para um nó anterior.


20
Encontrou o mesmo problema com Khaos. O downgrade do nó para a v11.15.0 fez o truque.
Terje Norderhaug

4
Problema semelhante aqui usando o webshotpacote de nós. Eu suspeito que eles precisam atualizar alguma coisa antes que eu possa continuar com o Nó v12.
Jacob Morrison

69
Estou usando nó v12.1.0e gole gulp@4.0.2, mas ele não funciona
Most Wanted

32
Eu tentei com nó v10.xe gole v3.x, então a magia happned
kuldipem

12
Eu recomendo usar a solução npm-shrinkwrap.json postada por Valentin: stackoverflow.com/a/58394828/2726785 , mesmo que essa seja a solução aceita.
Erik Hansen

247

Encontramos o mesmo problema ao atualizar um projeto herdado, dependendo da gulp@3.9.1 Node.js. 12.

Essas correções permitem usar o Node.js 12 gulp@3.9.1substituindo graceful-fsa versão 4.2.3.

Se o seu projeto não estiver sendo trabalhado ativamente e você usar o npm

Crie um npm-shrinkwrap.jsonarquivo contendo isso:

{
  "dependencies": {
    "graceful-fs": {
      "version": "4.2.3"
    }
  }
}

Confirme este npm-shrinkwrap.jsonarquivo. E então execute o npm installque atualizará o npm-shrinkwrap.jsonarquivo.

Infelizmente, esta solução não funciona mais se você npm installnovamente. Veja as outras soluções abaixo.

Se seu projeto estiver em desenvolvimento ativo e você usar o yarn v1

O Yarn v1 suporta a resolução de um pacote para uma versão definida . Você precisa adicionar uma resolutionsseção ao seu package.json:

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

Obrigado @jazd por esta maneira de resolver o problema.

Se o seu projeto estiver em desenvolvimento ativo e você usar o npm

Usando npm-force-resolutionscomo um script de pré-instalação, é possível obter um resultado semelhante ao do yarn v1. Você precisa modificar seu package.json desta maneira:

{
  // Your current package.json
  "scripts": {
    // Your current package.json scripts
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "graceful-fs": "4.2.3"
  }
}

npm-force-resolutionsalterará o package-lock.jsonarquivo para definir graceful-fsa versão desejada antes que installseja concluído.

Se você estiver usando um .npmrcarquivo personalizado em seu projeto e ele contiver um proxy ou um registro personalizado, precisará mudar npx npm-force-resolutionspara, npx --userconfig .npmrc npm-force-resolutionsporque, a partir de agora, npxnão usa o .npmrcarquivo de pasta atual por padrão.

Origem do problema

Esse problema decorre do fato de que gulp@3.9.1 depende de graceful-fs@^3.0.0qual fsmódulo monkeypatches Node.js.

Isso costumava funcionar com o Node.js até a versão 11.15 (que é uma versão de uma ramificação de desenvolvimento e não deve ser usada na produção).

graceful-fs@^4.0.0não monkeypatch fsmais o módulo Node.js. , o que o torna compatível com o Node.js.> 11.15.

Observe que essa não é uma solução perene, mas ajuda quando você não tem tempo para atualizar gulp@^4.0.0.


6
Uau - isso é ótimo! Não estava com vontade de reverter a instalação do nó, portanto, esta é uma solução perfeita.
dgo 14/11/19

@ Valentin isso funcionou para mim, mas como funcionou? Pelo que li, além de publicável, o npm-shrinkwrap.json deve se comportar da mesma forma que o package-lock.json. Por que eles não se comportam da mesma maneira aqui? Por que o npm-shrinkwrap.json é necessário para corrigir isso?
JordRoss

4
Essa solução é perfeita para essa situação específica - deve ser realmente a resposta aceita.
Zerodevx

14
esta deve ser a resposta aceita
jtate

11
@ Valentin quando eu corro npm installpara regenerar package-lock.jsonou npm-shrinkwrap.json, parecia não ter conseguido bloquear essas dependências. Depois de executar novamente npm install --no-save, o gerado package-lock.jsonainda indica o npm para instalar as dependências ausentes.
PuiMan Cheui 21/01

95

Use os seguintes comandos e instale o nó v11.15.0 :

npm install -g n

sudo n 11.15.0

resolverá

ReferenceError: primordiais não está definido no nó

Referido das respostas @Terje Norderhaug @Tom Corelis.


3
Trabalhou para mim! Excelente resposta. Estou tentando descobrir isso há horas.
GlennFriesen 5/09/19

3
Resposta brilhante!
user1974753

2
Perfeito! Trabalhou para mim.
Raja

2
Realmente, você salvou minha vida. Obrigado.
trjade

6
O npm install -gn na minha máquina (Windows 64) produz um erro: npm ERR! notsup Plataforma não suportada para n@6.1.3: wanted {"os": "! win32", "arch": "any"} (atual: {"os": "win32", "arch": "x64"})
Daryl McCullough

45

Corrija em 1 minuto:

Basta seguir estes passos . Estou no windows 10 e funcionou perfeitamente para mim!

  1. No mesmo diretório em que você package.jsoncriou um npm-shrinkwrap.jsonarquivo com o seguinte conteúdo:
    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
  1. Execute npm installe não se preocupe, ele será atualizado npm-shrinkwrap.jsoncom vários conteúdos.

  2. Execute gulppara iniciar o projeto.


11
Funciona como um encanto em win 10 / WSL - Obrigado!
opHASnoNAME 16/04

11
a resposta que funciona como charme
Adiii 02 de

11
Também funcionou como um encanto no Ubuntu.
Manoj - GT

11
Funciona bem no Win 10 pro! Obrigado :)
elhef

11
Ótimo! Eu estava tentando executar o projeto FilterBlend, mas recebi esse erro maldito. Após a atualização para o gulp 4, recebi um erro diferente (gulp.hasTask não é uma função). A criação deste arquivo solucionou o problema.
Dennis Kassel

27

Use os seguintes comandos para instalar node v11.15.0e gulp v3.9.1:

npm install -g n

sudo n 11.15.0

npm install gulp@^3.9.1
npm install 
npm rebuild node-sass

Resolverá esse problema:

ReferenceError: primordials is not defined in node

11
Trabalhou para mim, teve que seguir todos os passos.
Jason

11
Por favor, não use um ramo NodeJS shortliving (todos os números de versão estranhas como 9 e 11), de uso NodeJS 10.
Daniel Ruf

trabalhou para mim obrigado
Kapil soni

Sério, siga todas as etapas.
Ele

O primeiro comando falha com EBADPLATFORM no Windows.
Ronan Paixão

22

Usando o NVM para gerenciar a versão do nó que você está usando, os seguintes comandos funcionaram para mim:

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

3
Eu sempre acabo voltando a isso.
snow

3
Por favor, não use um ramo NodeJS de curta duração (todos os números de versão ímpares como 9 e 11), use o NodeJS 10. Também use em 10vez do nome do código.
Daniel Ruf

11
Para Windows, use nvm-windows .
Lupa

12

O Gulp 3.9.1 não funciona com o Nó v12.xx e, se você atualizar para o Gulp 4.0.2, precisará alterar completamente o gulpfile.js com a nova sintaxe (série e paralelos). Portanto, sua melhor aposta é fazer o downgrade para o Nó V 11.xx, o 11.15.0 funcionou bem para mim. Simplesmente usando o seguinte código no terminal:

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

Felicidades!


Depois disso, recebo o erro: "/ c / Usuários / Usuário / AppData / Roaming / npm / node: linha 8: C: \ Usuários \ Usuário \ AppData \ Roaming \ npm / node_modules / node / bin / node: esse arquivo ou diretório "
Ivan Topić

11

teve mesmo erro e, finalmente, correção que quando atualizados todos os pacotes e, em seguida, mencionou a mesma versão do motor nó e versão npm em package.jsoncomo é no meu sistema de trabalho local.

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

Eu estava recebendo esse erro ao implantar no heroku.

para obter mais suporte ao checkout heroku


6

Fazer o downgrade para o nó estável corrigiu esse problema para mim, pois ocorreu após o upgrade para o nó 12

sudo n 10.16.0


3
Se você tentar isso e obter o erro: 'sudo: n: comando não encontrado', ser-se de instalar nprimeiro com: 'npm instalar -g n'
AlmostPitt

Tentei isso no Windows 10 (64 bits) e obtive: - C: \ react-script-editor> npm install -gn npm ERR! código EBADPLATFORM npm ERR! notsup Plataforma não suportada para n@6.1.0: wanted {"os": "! win32", "arch": "any"} (atual: {"os": "win32", "arch": "x64"}) npm ERR! notsup SO válido:! win32 npm ERR! notsup Arco válido: qualquer erro npm! notsup OS atual: win32 npm ERR! notsup Arco real: x64
Nigel Price

6

TL: DR

Gulp 3.*não funciona no Node 12.*ou acima. Você deve fazer o downgrade do Node ou atualizar o Gulp.

Se você tiver pouco tempo, faça o downgrade do Node para a v11. * Ou abaixo; se você precisar de recursos mais recentes e tiver tempo para possivelmente corrigir uma carga de dependências quebradas, atualize o Gulp para 4. * ou superior!

Como outros já mencionaram, o Gulp 3.*não é suportado no Node 12ou acima, portanto, você deverá fazer o downgrade da sua versão do Node para 11.*ou abaixo, OU atualizar seu Gulp para4.0 .

A melhor opção depende, em última análise, de quanto tempo você tem, pois a atualização do Gulp traz benefícios de arquivos gulpfiles mais limpos e controle interno sobre a execução de tarefas em série ou paralela , mas também depende da reescrita do arquivo gulpfile para uma nova sintaxe, e pode (leia-se: provavelmente + verá o final deste comentário) causar conflitos com algumas dependências.


Nó de downgrade

Essa é a opção mais fácil e rápida. Especialmente se você usar n ou nvm , pois eles permitem a instalação e troca muito rápidas entre as versões do Nó.

Instalando a versão do Node no N

n 10.16.0

Instalando a versão do nó no NVM

nvm install 10.16.0

Depois de fazer isso, talvez seja necessário reconstruir suas dependências do npm ou remover sua node_modulespasta E seu package-lock.jsonarquivo ou reinstalar suas dependências. Embora se você está apenas revertendo para uma versão de nó pré-existente, provavelmente deve estar bem.


Atualizando o Gulp

Como mencionado acima, essa é uma tarefa mais demorada, mas pode trazer benefícios a longo prazo. Por exemplo, o Node 12agora introduziu suporte nativo para módulos ES (atrás de um sinalizador experimental) e suporte completo no Node 13.

Pode ser necessário atualizar o Node para usá-lo, forçando-o a atualizar o Gulp. Ou você pode simplesmente querer os benefícios do uso do Gulp 4, pois oferece controle melhor e mais eficiente sobre as tarefas de gravação.

Já existem vários artigos sobre isso, então não vou detalhar mais os detalhes, mas para reiterar - esse não é um trabalho rápido . Dependendo do tamanho do seu projeto, pode haver alguma reescrita notável necessária e você pode ter dependências que quebram. Se você estiver com pouco tempo, deve optar simplesmente por fazer o downgrade do Node, pelo menos temporariamente.


Mas eu já tenho o Gulp 4 e ainda não funciona!

Se, como eu, você já estiver usando o Gulp 4+ (eu estava usando o Gulp 4.0.2, originalmente no Nó 10) e atualizou recentemente (atualizei para Node 13.8.0), você ainda está tendo o problema, pode ser porque uma dependência depende de um versão mais antiga do Gulp, e isso está ficando preso no pipeline.

No meu caso, gulp-combine-mqera uma dependência usando o Gulp3.9.* . Desabilitar esta tarefa no meu arquivo de gulp permitiu que o Gulp fosse executado novamente.

Se isso acontecer, você tem algumas opções: você pode,

  1. Vá sem o plugin, se não for absolutamente necessário
  2. Encontre uma alternativa,
  3. Corrija o plugin

Escusado será dizer que, se você possui vários plugins que dependem da versão mais antiga do Gulp - especialmente se esses plugins são vitais para a sua aplicação - é aqui que pode haver uma grande parte do tempo gasto na atualização do Gulp (daí os avisos acima).

Se isso acontecer, é melhor fazer o downgrade do Node, pelo menos até que os patches possam ser emitidos.


4

Este erro ocorre devido à nova versão do Node (12) e a uma versão antiga do gulp (menor que 4).

Não é recomendável fazer o downgrade do nó e de outras dependências. Eu resolvi isso atualizando o package.jsonarquivo buscando a versão mais recente de todas as dependências. Para isso, eu uso npm-check-updates. É um módulo que atualiza a package.jsonversão mais recente de todas as dependências.

Referência : https://www.npmjs.com/package/npm-check-updates

npm i -g npm-check-updates
ncu -u
npm install

Na maioria dos casos, teremos que atualizar gulpfile.jso seguinte, da seguinte forma:

Referência : https://fettblog.eu/gulp-4-parallel-and-series/#migration

Antes:

gulp.task(
    'sass', function () {
        return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])

            ....

    }
);

Other config...

gulp.task(
    'watch', function () {
        gulp.watch(sourcePath + '/sass/**/*.scss', ['sass']);
    }
);

Depois de:

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'));
    }
);

Ótima solução se você não possui arquivos gulp complexos. No meu caso, só precisei adaptar duas linhas por gulpfile.js. Obrigado pelo breve guia de migração!
Tobias

3

Eu estava recebendo esse erro no Windows 10. Acabou sendo um perfil de roaming corrompido.

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:

A exclusão da C:\Users\{user}\AppData\Roaming\npmpasta corrigiu meu problema.


2
Isso estragou todas as minhas dependências da NPM, desculpe.
ashilon

3

Basta seguir estes passos. Ele funcionou perfeitamente com o npm install executando várias vezes ou instalando outros módulos ou até mesmo publicando projetos no artefato.

No mesmo diretório em que você possui o package.json, crie um arquivo npm-shrinkwrap.json com o seguinte conteúdo:

{
  "dependencies": {
    "graceful-fs": {
        "version": "4.2.2"
     }
  }
}

Execute o npm install e não se preocupe, ele atualizará o npm-shrinkwrap.json com um monte de conteúdo. Vamos nos livrar dessas atualizações atualizando as opções de scripts package.json .

"scripts": {
    "preshrinkwrap": "git checkout -- npm-shrinkwrap.json",
    "postshrinkwrap": "git checkout -- npm-shrinkwrap.json"
}

Agora você pode executar o npm install e seu npm-shrinkwrap.json estará intacto e funcionará para sempre.


2

Isso pode ter chegado tarde, mas, para quem ainda estiver interessado em manter o Nó v12 enquanto usa o gulp ^ 4.0 mais recente, siga estas etapas:

Atualize a interface da linha de comandos (apenas por precaução) usando:

npm i gulp-cli -g

Adicione / Atualize a gulpseção sob dependências do seu package.json

"dependencies": {
  "gulp": "^4.0.0"
}

Exclua seu package-lock.jsonarquivo

Exclua sua node_modulespasta

Por fim, execute npm ipara atualizar e recriar a nova pasta node_modules e o arquivo package-lock.json com os parâmetros corretos para o Gulp ^ 4.0

npm i

Nota O Gulp.js 4.0 apresenta os métodos series()e parallel()para combinar tarefas em vez dos métodos de matriz usados ​​no Gulp 3; portanto, você pode ou não encontrar um erro em seu gulpfile.jsscript antigo .

Para saber mais sobre a aplicação desses novos recursos, este site realmente fez justiça a ele: https://www.sitepoint.com/how-to-migrate-to-gulp-4/

( Se ajudar, por favor, deixe um baque )


Para que serve gulp-cli? Eu segui seus passos e fiz tudo funcionar inicialmente; mas então eu desinstalei gulp-cli(já que não vi onde estava sendo usado) e tudo ainda funcionava. Obrigado pela resposta, no entanto, porque estou novamente em funcionamento com o node v12.9.1e o Gulp 4.0.2!
MuffinTheMan

Fico feliz que ajudou. gulp-clié um utilitário de linha de comando. Seus garante uma instalação adequada de gole Como você pode ver na instalação gole passos aqui: gulpjs.com/docs/en/getting-started/quick-start
Sab



2

Eu enfrentei o mesmo problema. O que eu tentei e trabalhei para mim:

  1. Verifique a versão do NODE e GULP (a combinação do nó v12 e gulp menor que v4 não funciona)

  2. Eu rebaixo a versão do NPM por:

    • sudo NPM install -gn
    • sudo n 10.16.0

Funcionou bem, então basta seguir as instruções do seu console.



1

Para quem está usando yarn.

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

Por favor, não use um ramo NodeJS shortliving (todos os números de versão estranhas como 9 e 11), de uso NodeJS 10.
Daniel Ruf

0

Para qualquer pessoa com o mesmo erro pelo mesmo motivo no ADOS CI Build:

Essa foi a primeira pergunta que encontrei ao procurar ajuda. Eu tenho um pipeline de construção do ADOS CI em que a primeira tarefa do instalador da ferramenta Node.js. é usada para instalar o Node. A tarefa npm é usada para instalar o gulp (npm install -g gulp). Em seguida, a tarefa Gulp a seguir executa a tarefa padrão no gulpfile.js. Há algumas coisas gulp-sass nele.

Quando mudei a ferramenta Node.js. para instalar o nó mais recente 12.x em vez de um mais antigo, e a versão mais recente do gulp era 4.0.2. O resultado foi o mesmo erro descrito na pergunta.

O que funcionou para mim nesse caso foi fazer o downgrade do node.js para a versão 11.x mais recente, como já foi sugerido por Alphonse R. Dsouza e Aymen Yaseen. Nesse caso, embora não haja necessidade de usar nenhum comando sugerido, basta definir a especificação da versão do instalador da ferramenta Node.js. para a versão mais recente do Nó da versão 11.x.

insira a descrição da imagem aqui

A versão exata do Node.js que foi instalada e está funcionando foi 11.15.0. Não precisei fazer o downgrade do Gulp.


0

Eu acertei esse erro depois de atualizar meu nó para a versão 12, que não funciona com o Gulp 3.9.1. Em relação ao fato de o meu gulpfile.js não ser tão complexo, decidi atualizar para o Gulp 4 usando este artigo , correu bem e ficou muito mais fácil do que eu pensava.


0

Você tem duas opções aqui

  1. Atualize para o gulp 4 Or Else
  2. faça o downgrade para uma versão anterior do nó.

0

Isso ocorre porque o problema de compatibilidade entre nodee gulpno seu sistema. A nodeatualização ou a atualização gulpcorrigirá esse problema.

sudo npm i -g n
sudo n 11.15.0

Tente remover a node_modulespasta e o package-lock.jsonarquivo e instale novamente usando o npm icomando se ainda não estiver funcionando.


0

O que funcionou para mim foi usar o python2 durante a instalação do npm.

> npm install --python=~/venv/bin/python

0

Como também recebemos esse erro quando usamos o pacote s3 NPM. Portanto, o problema é que, com o pacote graceful-fs, precisamos atualizá-lo. Está funcionando bem no 4.2.3.

Portanto, basta olhar no pacote NPM que ele está mostrando nos logs rastreia e atualize o graceful-fs de acordo com 4.2.3.


0

Também estava recebendo erro no nó 12/13 com o Gulp 3, movendo-me para o nó 11 funcionou.


0

Resolvido fazendo o downgrade da versão do Node.js. de 12.14.0para 10.18.0e reinstalando node_modules.


0

Se você estiver tentando instalar semantic-uie o seguinte erro ocorrer, tente baixar a versão mais recente do nó js(13.5.0)com os recursos mais recentes, no Node.js.org. Além disso, em vez de tentar a semântica de instalação do NPM, basta adicionar o link (que pode ser encontrado do link cdnjs para o cabeçalho do seu index.htmlarquivo. Boa sorte!


O exemplo de código seria uma ótima adição aqui.
rhand 1/01

-1

Etapas para corrigir o problema: -

Corrigi o problema com as seguintes etapas: -

  1. Instalando o NVM
  2. Instalou o lts / dubnium usando o comando " nvm install lts / dubnium "
  3. Use lts / dubnium usando o comando " nvm install lts / dubnium "

Agora você pode engolir


11
Esta é uma fraude imprecisa da resposta de @kevink
Z4-

-1

Eu sugiro que você primeiro verifique se a instalação do NPM não é seu problema. Então você faz o downgrade das versões do nó e do gulp. Usei o nó 10.16.1 e o gulp 3.9.1.

Para fazer o downgrade do seu gole, você pode tentar

npm install gulp@^3.9.1
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.