node:process
O módulo node:process no Azion Runtime: o objeto process, exemplos de variáveis de ambiente, nextTick e informações do processo, e as APIs suportadas.
O módulo node:process fornece process, o objeto do Node.js que guarda informações sobre o processo atual e controla a execução dele. Em uma function, os usos mais frequentes são ler variáveis de ambiente por meio de process.env e agendar trabalho com process.nextTick(). Após o deploy, process.env contém as variáveis de ambiente da sua conta, que você também pode ler com Azion.env.get().
No Azion Runtime, process também é um global, mas o global e o export padrão de node:process são objetos diferentes. Nos exemplos abaixo, o global process.env.NODE_ENV retorna production, e a mesma propriedade do objeto importado não retorna nenhum valor.
Exemplos
Cada exemplo é uma function completa que importa de node:process. A resposta abaixo de cada exemplo é a que uma function com deploy feito retorna.
Variáveis de ambiente e nextTick
Esta function registra no log o global process.env.NODE_ENV, agenda um callback com nextTick e retorna o valor na resposta:
A function registra production no log e responde com este corpo:
Configuração a partir de variáveis de ambiente
Esta function lê quatro valores de configuração de process.env, usa um valor padrão para cada um deles e informa se uma chave de API está definida sem expor o valor dela:
Sem nenhuma das quatro variáveis definidas, a function registra o aviso API_KEY not configured no log e responde com os valores padrão:
Execução adiada com nextTick
Esta function registra a ordem em que o código dela é executado em torno de duas chamadas a nextTick, aguarda 10 ms e retorna essa ordem:
Em uma function com deploy feito, os callbacks de nextTick ainda não foram executados quando a function monta a resposta, então a ordem termina em End e não lista nenhum dos callbacks:
Informações do processo
Esta function lê a plataforma, a arquitetura, as versões e os IDs de processo, e os retorna como JSON formatado:
A function responde com os valores fixos. v8Version é indefinido, então JSON.stringify o deixa fora do corpo:
Uso de memória
Esta function lê process.memoryUsage() antes e depois de montar um array, e retorna as duas leituras e a diferença entre elas:
Todos os campos de process.memoryUsage() retornam 0, então as duas leituras e a diferença são 0:
Uptime e medição de tempo
Esta function lê process.uptime() e process.hrtime() e, em seguida, mede uma espera de 100 ms com process.hrtime.bigint():
Após o deploy, process.uptime() retorna 0, process.hrtime() retorna segundos inteiros com 0 nanossegundos, e o tempo medido durante a espera de 100 ms é 0:
APIs suportadas
A tabela lista o status de cada API de node:process no Azion Runtime:
| API | Status |
|---|---|
process.env | 🟢 Com suporte |
process.nextTick() | 🟢 Com suporte |
process.platform | 🟡 Suporte parcial (string vazia) |
process.arch | 🟡 Suporte parcial (string vazia) |
process.version | 🟢 Com suporte |
process.versions | 🟡 Suporte parcial (somente node) |
process.pid | 🟡 Suporte parcial (valor fixo) |
process.ppid | 🟡 Suporte parcial (valor fixo) |
process.uptime() | 🟡 Suporte parcial (retorna 0) |
process.hrtime() | 🟡 Suporte parcial |
process.hrtime.bigint() | 🟡 Suporte parcial |
process.memoryUsage() | 🟡 Suporte parcial (retorna 0) |
process.cwd() | 🟡 Suporte parcial |
process.exit() | 🟡 Suporte parcial |
process.on() | 🟡 Suporte parcial |
process.argv | 🟡 Suporte parcial |
process.title | 🟡 Suporte parcial |
process.binding() | 🔴 Sem suporte |
As APIs marcadas como 🟡 Suporte parcial têm funcionalidade limitada em comparação com a implementação completa do Node.js. Os valores delas são fixos e não descrevem a máquina que executa o seu código. process.platform, process.arch e process.title são strings vazias, process.pid é 200 e process.ppid é 100. process.version é v22.14.0, e process.versions contém somente node. process.cwd() retorna /, e process.argv é um array vazio. Após o deploy, process.hrtime() e process.hrtime.bigint() retornam segundos inteiros com 0 nanossegundos.
process.exit() não encerra o processo do runtime, e process.on() tem suporte limitado a eventos. process.binding() lança Error: [unenv] process.binding is not implemented yet!. Para a configuração do ambiente, use process.env, que tem suporte completo.