Skip to content

Instantly share code, notes, and snippets.

@Oosasukel
Last active September 6, 2020 22:29
Show Gist options
  • Save Oosasukel/4ac1001ec4f5456585828ead3780ff09 to your computer and use it in GitHub Desktop.
Save Oosasukel/4ac1001ec4f5456585828ead3780ff09 to your computer and use it in GitHub Desktop.
Utilizando ESM no Node

Utilizando ESM no Node

ECMAScript Modules são para reutilizar código em outros arquivos usando a sintaxe de import e export.

Exemplo:

//Arquivo foo.js que exporta uma função

export function foo() {
  //code
}
//Arquivo que quer utilizar aquela função

import { foo } from './foo.js';

foo();

Quando colocamos a tag script no html e queremos usar ESM, temos que transformar o script em um módulo, adicionando type="module".

<script src="script.js" type="module"></script>

Mas no Node, não temos uma tag script para ir lá e mudar o tipo para module.

Na versão 14 do Node foi implementado uma forma de fazer isso, mas nas versões anteriores conseguimos fazer isso usando bibliotecas externas.

Aqui mostrarei como utilizar ESM no Node v14 e nas versões anteriores também.

ESM no Node v14+

Nesta versão, você só precisará acrescentar uma linha no package.json e já pode usar os Módulos ES 😃.

"type": "module",

ESM no Node v14-

Uma das formas de conseguir usar os Módulos ES é usar a biblioteca esm, você pode instalar com o seguinte comando:

npm install esm

Agora você já pode utilizar e quando for executar o servidor, precisa acrescentar o -r esm no script.

exemplo:

node -r esm server.js

Testando

Criando um app Node

npm init

Instalando express

npm install express

Criarei o server.js com o seguinte código:

import express from 'express';

const app = express();

app.listen(3000, () => {
    console.log('Listening on port: 3000');
});

app.get('', (req, res) => {
    res.send('Hello ESM');
});

Vou colocar o server.js como arquivo principal no package.json e também acrescentar a linha type, para dizer que estou usando módulos ES:

"main": "server.js",
"type": "module",

Rodar o app:

npm start

Acessar http://localhost:3000 para ver se deu certo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment