Todos os produtos
Search
Central de documentação

Function Compute:Tratamento de erros

Última atualização: Sep 09, 2026

O Function Compute captura erros lançados pela sua função Node.js e retorna uma resposta estruturada. Esta página aborda as duas categorias de erros que funções Node.js podem gerar e explica como interpretar os códigos de status HTTP do service.

Tipos de erro

Exceções capturadas

Quando sua função lança uma exceção, o Function Compute a captura e retorna um objeto JSON com três campos:

Campo

Descrição

errorMessage

A string da mensagem de erro

errorType

O nome da classe de erro JavaScript

stackTrace

Um array de frames da pilha de execução

Módulos ECMAScript

A sintaxe de módulos ECMAScript requer Node.js 18 ou posterior. O código de exemplo suporta implantação com um clique em ( nodejs-fc-err-es ).
export const handler = async (event, context) => {
  throw new Error('oops');
};

Módulos CommonJS

exports.handler = function(event, context, callback) {
  throw new Error('oops');
};

Resposta de exemplo:

{
    "errorMessage": "oops",
    "errorType": "Error",
    "stackTrace": [
        "Error: oops",
        "    at handler (file:///code/index.mjs:2:9)",
        "    at module.exports (file:///var/fc/runtime/nodejs20/bootstrap.mjs:5655:14)",
        "    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
    ]
}

Saídas anormais

Se sua função chamar process.exit() durante a execução, o runtime não conseguirá capturar um erro estruturado. Nesse caso, o service retorna uma mensagem genérica:

Módulos ECMAScript

A sintaxe de módulos ECMAScript requer Node.js 18 ou posterior.
export const handler = async (event, context) => {
  process.exit(1);
};

Módulos CommonJS

exports.handler = function(event, context, callback) {
  process.exit(1);
};

Resposta de exemplo:

{
    "errorMessage": "Process exited unexpectedly before completing request (duration: 12ms, maxMemoryUsage: 0MB)"
}

Códigos de status HTTP

Importante

Uma resposta 2xx não garante o êxito da função. Verifique o cabeçalho de resposta X-Fc-Error-Type para detectar erros de função retornados com um código de status 2xx.

Quando uma invocação de função falha, o Function Compute retorna um código de status HTTP, um corpo de resposta e — para erros no nível da função — um cabeçalho de resposta X-Fc-Error-Type. Analise esses sinais para tratar erros no código ou exibi-los aos usuários finais.

Código de status

Significado

2xx

O Function Compute recebeu a solicitação. Se a resposta incluir o cabeçalho X-Fc-Error-Type, ocorreu um erro na função — por exemplo, uma exceção não capturada no seu código.

4xx (exceto 429)

O cliente que iniciou a invocação enviou uma solicitação inválida.

429

A solicitação foi limitada.

5xx

Ocorreu um erro interno no Function Compute, a configuração da função é inválida ou há um problema de recurso.

Para obter mais informações sobre erros de invocação, consulte Configure a retry mechanism.

Perguntas frequentes

require is not defined in ES module scope

Sintoma

Quando o arquivo de entrada de uma função Node.js é carregado como um módulo ES (a extensão do arquivo é .mjs ou package.json define "type": "module") e o código usa require() para carregar módulos, a invocação retorna o código de status HTTP 200, os cabeçalhos de resposta incluem X-Fc-Error-Type: InvocationError e o corpo da resposta contém o seguinte erro:

{
    "errorMessage": "require is not defined in ES module scope, you can use import instead",
    "errorType": "ReferenceError",
    "stackTrace": [
        "ReferenceError: require is not defined in ES module scope, you can use import instead",
        "    at file:///code/index.mjs:1:15",
        "    at ModuleJob.run (node:internal/modules/esm/module_job:218:25)"
    ]
}

O conteúdo do erro varia conforme o tipo de arquivo de entrada e a localização de require():

  • Se o arquivo de entrada tiver a extensão .js e package.json definir "type": "module", errorMessage incluirá uma linha adicional: This file is being treated as an ES module because it has a '.js' file extension and '/code/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.

  • Caso require() seja chamado dentro da função handler em vez de no nível superior do módulo, errorMessage será require is not defined.

Causa

require() é a função de carregamento do sistema de módulos CommonJS e não está disponível no escopo de módulos ES. Depois que um arquivo é identificado como módulo ES, o Node.js não injeta variáveis CommonJS como require, module e exports.

Solução

Escolha um dos métodos a seguir com base na estrutura do seu código:

  • Reescreva require() como instruções import de módulo ES. Para carregar um módulo dinamicamente, utilize a expressão import().

  • Para manter a sintaxe require(), renomeie a extensão do arquivo de entrada para .cjs. Não é necessário alterar a configuração do handler da função.

O exemplo a seguir mostra a reescrita para módulo ES (arquivo de entrada index.mjs):

// Import a Node.js built-in module and a local ES module file
import { createHash } from 'node:crypto';
import { helper } from './utils.mjs';

export const handler = async (event, context) => {
  return createHash('sha256').update(helper()).digest('hex');
};

Este exemplo demonstra como carregar um módulo dinamicamente:

const crypto = await import('node:crypto');

Já o exemplo abaixo ilustra a sintaxe CommonJS (arquivo de entrada index.cjs):

const crypto = require('crypto');

exports.handler = async (event, context) => {
  return crypto.createHash('sha256').digest('hex');
};
Observação: Para carregar uma dependência de terceiros (como lodash ), execute npm install localmente primeiro e depois empacote e implante o diretório node_modules junto com seu código. Em módulos ES, referencie uma dependência CommonJS usando uma importação padrão, por exemplo, import _ from 'lodash'; .

Os módulos ES são suportados apenas nos runtimes Node.js 18 e posteriores. Nos runtimes Node.js 16 e anteriores, um arquivo de entrada .mjs não é carregado, e a invocação retorna "errorMessage": "Module '/code/index.js' is missing." e "errorType": "FunctionUnhandledError: ImportModuleError".