Fácil JavaScript
Exportando e importando uma função
Enunciado
Crie um módulo saudacao.mjs que exporta uma função dizerOla(nome) retornando "Olá, [nome]!". Depois, em main.mjs, importe e use essa função para exibir a saudação para "Maria".
Requisitos
- O arquivo
saudacao.mjsdeve usarexportna função. - O arquivo
main.mjsdeve importar a função comimport. - A saída deve ser exatamente
Olá, Maria!.
Código inicial
// saudacao.mjs
// TODO: exporte a função dizerOla
// main.mjs
// TODO: importe e chame dizerOla('Maria')
Saída esperada
Olá, Maria!
Ver dica
Use export function dizerOla(nome) { ... } no primeiro arquivo e import { dizerOla } from './saudacao.mjs'; no segundo.
Mostrar solução
// saudacao.mjs
export function dizerOla(nome) {
return `Olá, ${nome}!`;
}
// main.mjs
import { dizerOla } from './saudacao.mjs';
console.log(dizerOla('Maria'));
Passo a passo
- No arquivo
saudacao.mjs, declaramos a funçãodizerOlaque recebenomee retorna uma string formatada com template literal. - A palavra-chave
exportantes defunctiontorna essa função pública para outros módulos. - No arquivo
main.mjs, usamosimport { dizerOla } from './saudacao.mjs';para trazer a função. O caminho./indica que o arquivo está na mesma pasta. - Chamamos
dizerOla('Maria')e passamos o resultado paraconsole.log, que imprime a saudação.
Por que funciona
O export cria um binding nomeado que pode ser importado por outros módulos. Como usamos exportação nomeada, o import precisa usar chaves {} com o mesmo nome. O caminho relativo ./saudacao.mjs é resolvido a partir do arquivo atual, garantindo que o módulo correto seja carregado.
Erros comuns
- Esquecer a extensão
.mjs: se o arquivo for.jse opackage.jsonnão tiver"type": "module", o Node.js tratará como CommonJS e dará erro de sintaxe. Use.mjsou configure opackage.json. - Usar
importsem chaves para exportação nomeada:import dizerOla from './saudacao.mjs'falha porque não há export default. O correto éimport { dizerOla }. - Caminho errado:
import { dizerOla } from 'saudacao.mjs'(sem./) faz o Node procurar emnode_modules. Sempre use./para arquivos locais.
Outra forma de resolver
Poderia usar export default function dizerOla(nome) { ... } e importar sem chaves: import dizerOla from './saudacao.mjs';. Isso é preferível quando o módulo tem uma única exportação principal.
Saída esperada
Olá, Maria!