Este guia explica o procedimento para resolver erros “ReferenceError: require não está definido”.
- Como resolver o erro “ReferenceError: require não está definido”?
- Razão 1: o tipo de aplicativo está definido como módulo
- Solução: Remova a chave “Tipo”
- Razão 2: Trabalhar em “.mjs ” Arquivo
- Solução: converta a extensão do arquivo para “.cjs”
- Abordagem Alternativa: Use a Declaração ES6 “importar/exportar”
Como resolver o erro “ReferenceError: require não está definido”?
Para importar módulos externos ou embutidos no projeto são utilizadas duas abordagens, estas são usando o “ exigir() ”método ou“ importar ”palavra-chave. O mencionado “ ReferenceError: require não está definido ”É enfrentado quando um usuário tenta usar o“ exigir() ”Método dentro do“ Módulo ES ' escopo. O erro discutido aparece assim no console em node.js quando o código indicado abaixo é executado:
Os motivos da ocorrência do erro “Resolver “ReferenceError: require não está definido” e suas soluções correspondentes são explicados nas seções abaixo.
Razão 1: o tipo de aplicativo está definido como módulo
Se sua aplicação está apresentando o erro mencionado, a solução mais fácil e demorada é a modificação do “ pacote.json ' arquivo. Procure o par chave/valor com o “ chave ' de ' tipo ”E o valor atribuído de“ módulo ”. Isso torna o ambiente de toda a aplicação modular, o que evita a utilização de “ CommonJS ”módulos e métodos. A representação visual deste par chave/valor aparece assim:
'tipo' : 'módulo' ,
Solução: Remova a chave “Tipo”
A solução é a remoção do “ tipo ”chave e valor atribuído do projeto node.js“ pacote.json ' arquivo. A remoção do arquivo “package.json” explora o escopo do módulo ES6 e torna o método “require() viável. Agora, quando o mesmo código for executado novamente não haverá ocorrência de erro.
Razão 2: Trabalhar em “.mjs ” Arquivo
O ' .mjs ”é um arquivo de código-fonte do módulo JavaScript. Ele contém código dentro do ambiente do módulo, não em “ CommonJS ”que divide o código em vários arquivos para melhor gerenciamento. O ' exigir() ”O método está sob o“ CommonJS ”. É por isso que o método “require” se tornará indefinido quando usado dentro do “ .mjs ”Extensão de arquivo e leva à ocorrência do erro mencionado:
Solução: converta a extensão do arquivo para “.cjs”
Assim como o código-fonte JavaScript modular, a extensão do arquivo “ .mjs ' está disponível. A extensão de “ .cjs ”é fornecido para“ CommonJS ”módulos e propriedades. Este arquivo não aceita “ modular ”pacotes como“ importar ”Mas funciona bem com versões ES5. No nosso caso, a alteração da extensão do arquivo resolverá o problema relacionado ao “ exigir() ”método:
Abordagem Alternativa: Use a Declaração ES6 “importar/exportar”
O ' exigir() ”O método é definido e fornecido pelo“ CommonJs ”E é aceitável até a versão JavaScript do ES5 (ECMAScript 5). Foi publicado em 2009 e agora se tornou obsoleto porque muitos módulos mais recentes não o suportam ou não funcionam corretamente no ES5. Assim como o “ exigir() ”O método agora está sendo substituído por um mais otimizado e fácil“ importar ' declarações. O funcionamento de ambas as entidades é o mesmo, mas a “importação” tem uma vantagem devido à tecnologia mais recente e à maior facilidade que proporciona.
Para módulos padrão ou externos
Na demonstração abaixo, a instrução “import” está sendo usada como alternativa ao método “require()” para importar o módulo padrão ou de terceiros:
importar readlineObj de 'Leia a linha' ;console. registro ( readlineObj ) ;
Após a compilação do código mencionado, a mesma tarefa que precisa ser realizada pelo “ exigir() ”é executado e o“ ReferenceError: require não está definido ”não aparecerá também:
Para módulos personalizados
O ' importar ”A instrução também é utilizada para “importar” os módulos ou funções de construção personalizada de outros arquivos que residem no mesmo diretório ou em diretórios diferentes. As funções ou variáveis de outros arquivos são exportadas usando o “ exportar ”palavra-chave. Por exemplo, visite o trecho de código abaixo no qual uma única função e uma variável aleatória serão importadas de outro arquivo:
aplicativo.js
const variável de exportação = 'Este guia é fornecido pela Linuxhint!' ;const função de exportação = ( ) => {
console. registro ( variável de exportação ) ;
} ;
exportar padrão função de exportação ;
exportar {
variável de exportação
} ;
A explicação do bloco de código acima é a seguinte:
- Primeiro, a variável aleatória chamada “ variável de exportação ”é definido e a função de seta“ funçãoexport() ”é criado que imprime a “exportVariable” criada no console.
- As palavras-chave de “ padrão de exportação ' e ' exportar ”São utilizados para exportar o“ funçãoexport() ' e ' variável de exportação ”entidades do arquivo.
- Quando este arquivo é importado, a função exportada e as variáveis ficam disponíveis para uso lá.
index.js
O “index.js” é o nosso arquivo secundário no qual a função e a variável exportadas serão importadas e utilizadas, contém o código abaixo:
importar função de exportação, { variável de exportação } de './app.js' ;função de exportação ( ) ;
console. registro ( variável de exportação ) ;
No código acima, o “ importar ”A instrução é usada para importar o padrão“ funçãoexport() ”E a variável“ variável de exportação ' de ' aplicativo.js ' arquivo.
Em seguida, ambas as entidades importadas são invocadas e exibidas no console para fins de verificação.
Agora, execute o principal “ index.js ”Arquivo usando o comando indicado abaixo:
índice do nó. jsA saída gerada mostra que os elementos importados estão funcionando corretamente sem causar o “ ReferenceError: require não está definido ”erro:
Trata-se de resolver o erro especificado.
Conclusão
Para resolver o “ ReferenceError: require não está definido ”Erro, remova o“ tipo ”chave com o valor de“ módulo ' de ' pacote.json ”Ou modifique a extensão do arquivo atualmente em funcionamento para“ .cjs ”. Caso você deseje trabalhar na versão modular ES6 então ao invés de usar o “ exigir() ”Método use o“ importar ”abordagem de declarações. Este guia explicou as possíveis soluções para resolver o “ ReferenceError: require não está definido “erro” em node.js