Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

ReferenceError: require is not defined in ES module scope

no código:

//const chalk = require('chalk');
import chalk from 'chalk';
//import { createRequire } from 'fs';
const fs = require('fs');
//import fs from 'fs';

function pegaArquivo(caminhoDoArquivo) {
    const enconding = 'utf-8';
    fs.readFile(caminhoDoArquivo, enconding, (_, texto) => {
        console.log(chalk.green(texto));
    })
}

pegaArquivo('./arquivos/texto1.md');

Apresenta o erro:

file:///C:/Users/xxx/Documents/Node.js/Iniciais/index.js:4
const fs = require('fs');
           ^

ReferenceError: require is not defined in ES module scope, you can use import instead
This file is being treated as an ES module because it has a '.js' file extension and 'C:\Users\xxx\Documents\Node.js\Iniciais\package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
    at file:///C:/Users/xxx/Documents/Node.js/Iniciais/index.js:4:12
    at ModuleJob.run (node:internal/modules/esm/module_job:194:25)

Node.js v18.16.1
3 respostas

Olá, Amon.

Tudo bem?

Parece que você está tentando misturar a sintaxe de importação de módulos ES6 com a sintaxe CommonJS no mesmo arquivo, o que pode causar alguns problemas.

O erro que você está vendo é porque o Node.js está tratando seu arquivo como um módulo ES6 (devido à presença da linha "type": "module" em seu package.json), mas você está tentando usar a função require() do CommonJS.

Para tentar corrigir isso, você pode tentar usar a sintaxe de importação ES6 para o módulo 'fs', assim como você fez para o módulo 'chalk'. Seu código ficaria assim:

import chalk from 'chalk';
import fs from 'fs';

function pegaArquivo(caminhoDoArquivo) {
    const enconding = 'utf-8';
    fs.readFile(caminhoDoArquivo, enconding, (_, texto) => {
        console.log(chalk.green(texto));
    })
}

pegaArquivo('./arquivos/texto1.md');

Se você preferir usar a sintaxe CommonJS, você pode alterar a extensão do seu arquivo para '.cjs' ou remover a linha "type": "module" do seu package.json. Se você fizer isso, você pode continuar usando require() para importar seus módulos.

Espero ter ajudado e bons estudos!

Tentei fazer isso, daí o erro apresentando na linha do terminal é undefined

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

solução!

o problema aqui era o caminho do arquivo, ao corrigir para o caminho correto e nome do arquivo correto, resolveu o problema do undefined

pegaArquivo('./arquivos/texto.md');

Sintaxe correta... hehe