Como resolver APIs do Node.js por meio de polyfills

Através da Azion CLI, você pode inicializar uma aplicação baseada em templates ou vincular um projeto existente. A lista de web frameworks inclui Next.js, React, Vue, Angular, Astro, JavaScript e outros. Esses frameworks JavaScript são executados no edge da Azion, em cima do Azion Runtime.

Os projetos com esses frameworks geralmente fazem uso de APIs de Node.js. Através do processo de build da Azion, realizado pelo Azion Bundler, essas APIs são resolvidas através do uso de polyfills.

Este guia mostrará como usar a API Buffer do Node.js através de polyfills em um projeto JavaScript na Azion usando a Azion CLI e o Azion Bundler.


Pré-requisitos

Antes de começar, você deve ter:


Inicialize um projeto JavaScript

  1. No terminal, inicialize o projeto:
Terminal window
azion init
  1. Digite o nome polyfills-guide:
Terminal window
Your application's name: (glorious-curiosity) polyfills-guide
  1. Escolha o template de JavaScript:
Terminal window
? Choose a preset: [Use arrows to move, type to filter]
Angular
Astro
Docusaurus
Eleventy
Emscripten
Gatsby
Hexo
Hono
Hugo
> Javascript
Jekyll
...
  1. Escolha o template Hello World:
Terminal window
? Choose a template: [Use arrows to move, type to filter]
Azion Edge SQL
Drizzle + Neon Sample
Drizzle + TiDB Sample
Drizzle + Turso Sample
Edge Function GitHub AutoDeploy
Fauna DB Boilerplate
> Hello World
HTMX Boilerplate
Simple Javascript Router Node
...
  1. Digite y para iniciar um servidor de desenvolvimento local.

  2. Digite y para instalar as dependências do projeto.

  3. Acesse a porta que foi retornada no terminal. Exemplo:

Terminal window
[Azion Bundler] [Server] › ✔ success Function running on port 0.0.0.0:3333, url: http://localhost:3333
  1. Retorne ao terminal e encerre o processo.

  2. Acesse seu projeto:

Terminal window
cd polyfills-guide
  1. Abra o arquivo azion.config.js. Você verá algo semelhante a isto:
polyfills-guide/azion.config.js
import { defineConfig } from 'azion';
export default defineConfig({
build: {
entry: 'main.js',
preset: {
name: 'javascript',
},
},
});

Este é o arquivo onde você pode adicionar configurações específicas para o seu projeto. Por exemplo, a propriedade polyfills pode ser definida como true ou false para controlar se os polyfills devem ou não ser permitidos:

polyfills-guide/azion.config.js
import { defineConfig } from 'azion';
export default defineConfig({
build: {
entry: 'main.js',
preset: {
name: 'javascript',
},
polyfills: true, // permite usar polyfills
},
});

Em nosso exemplo, você pode deixar o arquivo como está. Os polyfills são permitidos por padrão.

  1. Após aplicar estas configurações, você pode importar as APIs necessárias para o seu projeto. Neste exemplo, estamos usando a API Buffer do Node.js:

Dentro do arquivo main.js:

polyfills-guide/main.js
// Importa a classe Buffer do módulo 'buffer' no Node.js
import { Buffer } from "node:buffer";
const main = async (event) => {
// Cria um buffer a partir da string "Hello Edge!" com codificação UTF-8
const helloBuffer = Buffer.from("Hello Edge!", "utf8");
// Registra o conteúdo do buffer como uma string hexadecimal
console.log(helloBuffer.toString("hex"));
// Saída esperada: 48656c6c6f204564676521
// Registra o conteúdo do buffer como uma string base64
console.log(helloBuffer.toString("base64"));
// Saída esperada: SGVsbG8gRWRnZSE=
// Sobrescreve parte do buffer com a string "World" no deslocamento e comprimento especificados
helloBuffer.write("World", 6, 5, "utf8");
// Registra o conteúdo atualizado do buffer como uma string
console.log(helloBuffer.toString());
// Saída esperada: Hello World!
// Retorna o conteúdo do buffer como uma resposta com um status 200
return new Response(helloBuffer.toString(), { status: 200 });
};
export default main;
  1. Execute o projeto localmente rodando:
Terminal window
azion dev

Agora você pode verificar os logs no terminal e ver a API Buffer funcionando através de polyfills.


Contribuidores