1
resposta

erro ao rodar o node (npm run start)

PS C:\Projects\react-alurabooks> npm run start

react-alurabooks@0.1.0 start react-scripts start Starting the development server...

Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at module.exports (C:\Projects\react-alurabooks\node_modules\webpack\lib\util\createHash.js:90:53) at NormalModule._initBuildHash (C:\Projects\react-alurabooks\node_modules\webpack\lib\NormalModule.js:401:16) at handleParseError (C:\Projects\react-alurabooks\node_modules\webpack\lib\NormalModule.js:449:10) at C:\Projects\react-alurabooks\node_modules\webpack\lib\NormalModule.js:481:5 at C:\Projects\react-alurabooks\node_modules\webpack\lib\NormalModule.js:342:12 at C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at iterateNormalLoaders (C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:221:10) at C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:236:3 at runSyncOrAsync (C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:130:11) at iterateNormalLoaders (C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:232:2) at Array. (C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:205:4) at Storage.finished (C:\Projects\react-alurabooks\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16) at C:\Projects\react-alurabooks\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9 C:\Projects\react-alurabooks\node_modules\react-scripts\scripts\start.js:19 throw err; ^

Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at module.exports (C:\Projects\react-alurabooks\node_modules\webpack\lib\util\createHash.js:90:53) at NormalModule._initBuildHash (C:\Projects\react-alurabooks\node_modules\webpack\lib\NormalModule.js:401:16) at C:\Projects\react-alurabooks\node_modules\webpack\lib\NormalModule.js:433:10 at C:\Projects\react-alurabooks\node_modules\webpack\lib\NormalModule.js:308:13 at C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:367:11 at C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:233:18 at context.callback (C:\Projects\react-alurabooks\node_modules\loader-runner\lib\LoaderRunner.js:111:13) at C:\Projects\react-alurabooks\node_modules\babel-loader\lib\index.js:51:103 { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' }

Node.js v18.16.1

1 resposta

O erro ERR_OSSL_EVP_UNSUPPORTED que você está encontrando ao tentar executar o comando npm run start no seu projeto React está relacionado a uma mudança no Node.js a partir da versão 17, onde a política de criptografia padrão foi alterada para não permitir mais o uso de algoritmos de criptografia considerados inseguros ou obsoletos.

Esse problema pode ocorrer especialmente quando você está utilizando dependências que ainda tentam utilizar esses algoritmos agora não suportados pelo Node.js, ou quando o Webpack tenta usar alguma funcionalidade criptográfica que não é mais suportada na versão do Node.js que você está usando.

Existem algumas formas de contornar esse problema:

1. Downgrade do Node.js

Uma solução temporária pode ser fazer downgrade do Node.js para uma versão anterior à 17. Isso pode ser feito usando o nvm (Node Version Manager) para gerenciar várias versões do Node.js em seu ambiente de desenvolvimento. Para fazer isso:

  • Instale o nvm seguindo as instruções na página do GitHub do nvm.
  • Após a instalação, você pode fazer downgrade do Node.js para, por exemplo, a versão 16, que não tem esse problema, usando o comando:
    nvm install 16
    nvm use 16
    

2. Configurar Variáveis de Ambiente

Uma solução alternativa, que permite você continuar usando a versão atual do Node.js, é configurar uma variável de ambiente que relaxa a política de criptografia do Node.js. Isso pode ser feito da seguinte forma:

  • No Windows, você pode configurar a variável de ambiente temporariamente no terminal antes de executar seu projeto:

    set NODE_OPTIONS=--openssl-legacy-provider
    npm run start
    
  • No Linux ou macOS, o comando é um pouco diferente:

    export NODE_OPTIONS=--openssl-legacy-provider
    npm run start
    

Isso irá permitir que o Node.js use os algoritmos de criptografia não suportados pela política de segurança padrão.

3. Atualizar Dependências

O problema pode ser causado por alguma dependência desatualizada no seu projeto. Verifique se todas as suas dependências estão atualizadas, principalmente o Webpack e qualquer loader relacionado, como o babel-loader, pois atualizações recentes podem ter resolvido compatibilidades com as versões mais recentes do Node.js.

Para atualizar suas dependências, você pode usar os comandos:

npm update

ou verificar manualmente no arquivo package.json e atualizar as versões das dependências.

Conclusão

Embora as duas primeiras soluções sejam mais imediatas, a melhor prática a longo prazo é manter suas dependências atualizadas para garantir a compatibilidade com as versões mais recentes do Node.js, evitando assim potenciais problemas de segurança e desempenho.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software