Use APIs do Node.js com polyfills
Importe uma API do Node.js, como node:buffer, em uma function, faça o build com polyfills pela Azion CLI, execute localmente e faça o deploy.
Você pode importar uma API do Node.js, como node:buffer, em uma function e deixar o build da Azion CLI resolvê-la por meio de polyfills para o Azion Runtime. O build executa o Azion Bundler, que adiciona os polyfills quando a configuração do projeto os permite. Projetos dos outros presets que a CLI oferece, como Next.js, React, Vue, Angular e Astro, passam pelo mesmo build, tanto quando começam com azion init quanto quando entram com azion link. Para verificar quais módulos do Node.js uma function pode usar, consulte APIs do Node.js.
Pré-requisitos
- Uma conta Azion. Para criar uma, consulte Criar uma conta.
- A Azion CLI, instalada e com login feito na sua conta. Para instalá-la, consulte Primeiros passos com a Azion CLI.
- Node.js 18 ou posterior, com npm.
- Um terminal e um editor de código.
Crie um projeto de function em JavaScript
O comando azion init cria o projeto a partir de um preset e de um template. Crie um projeto chamado polyfills-guide:
O comando faz cinco perguntas. Em cada lista, use as setas do teclado ou digite para filtrar as entradas. Responda nesta ordem:
Em ? Choose a preset:, selecione Javascript.
Em ? Choose a template:, selecione Hello World.
Em Do you want to install project dependencies?, digite Y.
Em Do you want to start a local development server?, digite n.
Em Do you want to deploy your project?, digite n.
O comando busca o template, instala as dependências e confirma o projeto:
Os comandos seguintes são executados dentro do diretório do projeto. Acesse o diretório:
O diretório polyfills-guide contém o projeto da function, com index.js como arquivo de entrada e azion.config.mjs como arquivo de configuração.
Verifique a configuração de polyfills
A chave polyfills do objeto build em azion.config.mjs define se o build adiciona polyfills. Ela recebe um booleano: true adiciona os polyfills, e false os deixa de fora. Os polyfills são permitidos por padrão. O arquivo que o azion init gera para o preset Javascript já define a chave como true. O trecho mostra o bloco build e corta o restante do arquivo em …:
Mantenha o arquivo como está para usar uma API do Node.js na próxima etapa. Para todas as chaves que o arquivo aceita, consulte azion.config.js.
O build do projeto inclui os polyfills.
Importe uma API do Node.js na function
O build usa index.js como entrada padrão do preset Javascript. Substitua o conteúdo de index.js pela function a seguir. Ela importa Buffer de node:buffer, codifica uma string em dois formatos e sobrescreve parte dela:
A function registra três valores com console.log, como mostram os comentários dela, e responde a cada requisição com a string sobrescrita. Para mais operações de Buffer, consulte node
Execute a function localmente
O comando azion dev faz o build do projeto com os polyfills dele e serve a function na sua máquina. Inicie o comando:
O comando faz o build da function e a serve na porta 3333:
O aviso DEPRECATED se refere ao formato export default main da function, que continua passando pelo build e sendo executado. Para o formato que o build recomenda, consulte Handlers.
Abra http://localhost:3333 em um navegador. A function responde com a string sobrescrita:
A API Buffer é executada localmente por meio dos polyfills. Quando terminar, encerre o servidor no terminal em que ele está sendo executado.
Um módulo que é resolvido no build ainda pode lançar [unenv] <name> is not implemented yet! quando uma function chama um dos métodos dele. Antes de usar um módulo, verifique o status dele em APIs do Node.js. Para a lista de APIs que o bundler resolve por meio de polyfills, consulte o repositório do Azion Bundler. O Azion Bundler é open source, e você pode propor presets e implementações no repositório.
Faça o deploy da function
O comando azion deploy envia o projeto, faz o build dele com a mesma configuração de polyfills e cria a function, a aplicação e o workload. No diretório polyfills-guide, faça o deploy do projeto:
O comando imprime o domínio do workload:
O primeiro deploy pode levar vários minutos para responder em todas as localidades; os deploys seguintes levam cerca de dois minutos. Abra o domínio que o comando imprimiu. Depois do deploy, a function responde com Hello World, a mesma string da execução local.
Para as flags que alteram como o comando faz o build e o upload, como --auto, --dry-run e --workers, consulte azion deploy.