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
Ramesh
fonte

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.

Hassan Hodges
fonte
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 [email protected], 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 [email protected] Node.js. 12.

Essas correções permitem usar o Node.js 12 [email protected]substituindo 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 [email protected] 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.

Valentin
fonte
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.

Alphonse R. Dsouza
fonte
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 [email protected]: 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.

Diego Fortes
fonte
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
Cundong Zhang
fonte
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`
kevnk
fonte
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!

Aymen Yaseen
fonte
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

Ravi Anand
fonte
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

Tom Corelis
fonte
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 [email protected]: 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.

Oliver
fonte
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'));
    }
);
Rijo
fonte
Ó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.

user1754317
fonte
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.

saumilsdk
fonte
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 )

Sab
fonte
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

Corrigi esse problema no Windows 10 desinstalando o nó de Adicionar ou remover programas -> Node.js

Em seguida, instalei a versão 11.15.0 em https://nodejs.org/download/release/v11.15.0/

Escolha node-v11.15.0-x64.msi se você estiver executando o Windows de 64 bits.

Roubar
fonte
2

O Gulp está com problemas no Nodejs versão 11 e superior. Desinstale a versão atual do nó e reinstale o v10.15.1 aqui está o link para essa versão. Isso me ajuda e também resolverá o seu problema.

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

Farhan Ahmed
fonte
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.

kamni jaiswal
fonte
1

Para quem está usando yarn.

yarn global add n
n 11.15.0
yarn install # have to install again
Xiao Peng - ZenUML.com
fonte
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.

Lupa
fonte
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.

Mojtaba
fonte
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ó.
Milan R Dhameliya
fonte
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.

Rijosh
fonte
0

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

> npm install --python=~/venv/bin/python
Zubin
fonte
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.

Manish sharma
fonte
0

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

user3663323
fonte
0

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

Artem Luzhanovskyi
fonte
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!

Haiqa
fonte
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

Someshver Thakur
fonte
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
Anjasmara Dwi.S
fonte