1
resposta

consign e ES6 module export

Estou acompanhando o curso usando o NodeJs 14.4 e usando o método de import do ES6 (estou fazendo o curso de React e por isso me habituei a usar esse método). No curso é usando o require porém estou com um erro que, na minha pouco experiência com NodeJS acho que está no módulo do consign.

index.js:

import express from 'express'
import consign from 'consign'
(...)

atendimento.js

export function resolveGet(app){
    app.get('/atendimento', (req, res) => {
        res.send('[GET /atendimento] Service Atendimento.');
    });
}

Erro:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:\leonardo\alura\restapi\controllers\atendimentos.js
require() of ES modules is not supported.
require() of C:\leonardo\alura\restapi\controllers\atendimentos.js from C:\leonardo\alura\restapi\node_modules\consign\lib\consign.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename atendimentos.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from C:\leonardo\alura\restapi\package.json.

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1216:13)
    at Module.load (internal/modules/cjs/loader.js:1049:32)
    at Function.Module._load (internal/modules/cjs/loader.js:937:14)
    at Module.require (internal/modules/cjs/loader.js:1089:19)
    at require (internal/modules/cjs/helpers.js:73:18)
    at Consign.into (C:\leonardo\alura\restapi\node_modules\consign\lib\consign.js:232:15)
    at file:///C:/leonardo/alura/restapi/index.js:7:34
    at ModuleJob.run (internal/modules/esm/module_job.js:138:23)
    at async Loader.import (internal/modules/esm/loader.js:178:24) {
  code: 'ERR_REQUIRE_ESM'
}

No package.json do projeto eu adicionei a seguinte linha que, me corrigem se estou falando besteira, sinaliza que vou usar o import do ES6 (default seria o import do CommonJS)

"type": "module",

Minha dúvida é: estou fazendo algo errado ou esqueci de alguma coisa em se tratando de configuração ou esse módulo do consign do npm não está adaptado para esse método de importação dos módulos - reparei que a última atualização do consign foi a 4 anos atrás?

1 resposta

Oi, Leonardo, tudo bem?

Aparentemente isso não deveria ser um problema, já que você configurou o projeto para usar o import e o export do ES6. Você poderia compartilhar comigo o teu código? Se estiver no github, deixa aqui o link do repositório ou sobe ele pro google drive e me passa o link do projeto.

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