Todos los productos
Search
Centro de documentos

Function Compute:Manejo de errores

Última actualización: Sep 10, 2026

Function Compute captura los errores que genera su función de Node.js y devuelve una respuesta estructurada. En esta página se describen las dos categorías de errores que pueden producir las funciones de Node.js y cómo interpretar los códigos de estado HTTP del servicio.

Tipos de errores

Excepciones capturadas

Cuando su función lanza una excepción, Function Compute la captura y devuelve un objeto JSON con tres campos:

Campo

Descripción

errorMessage

La cadena con el mensaje de error

errorType

El nombre de la clase de error de JavaScript

stackTrace

Un arreglo de marcos de pila

Módulos ECMAScript

La sintaxis de módulos ECMAScript requiere Node.js 18 o posterior. El código de ejemplo es compatible con el despliegue con un solo clic ( 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');
};

Respuesta de ejemplo:

{
    "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)"
    ]
}

Salidas anómalas

Si su función llama a process.exit() durante su ejecución, el entorno no puede capturar un error estructurado. En su lugar, el servicio devuelve un mensaje genérico:

Módulos ECMAScript

La sintaxis de módulos ECMAScript requiere Node.js 18 o posterior.
export const handler = async (event, context) => {
  process.exit(1);
};

Módulos CommonJS

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

Respuesta de ejemplo:

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

Códigos de estado HTTP

Importante

Una respuesta 2xx no garantiza que la función se haya ejecutado correctamente. Compruebe el encabezado de respuesta X-Fc-Error-Type para detectar los errores de función devueltos con un código de estado 2xx.

Cuando falla la invocación de una función, Function Compute devuelve un código de estado HTTP, un cuerpo de respuesta y, en caso de errores a nivel de función, un encabezado de respuesta X-Fc-Error-Type. Revise estos indicadores para manejar los errores en el código o mostrarlos a los usuarios finales.

Código de estado

Significado

2xx

Function Compute recibió la solicitud. Si la respuesta incluye el encabezado X-Fc-Error-Type, ocurrió un error en la función; por ejemplo, una excepción no capturada en su código.

4xx (excepto 429)

El cliente que inició la invocación envió una solicitud no válida.

429

Se limitó la tasa de la solicitud.

5xx

Ocurrió un error interno en Function Compute, la configuración de la función no es válida o existe un problema de recursos.

Para obtener más información sobre los errores de invocación, consulte Configure a retry mechanism.

Preguntas frecuentes

require is not defined in ES module scope

Síntoma

Cuando el archivo de entrada de una función de Node.js se carga como módulo ES (la extensión del archivo es .mjs o package.json define "type": "module") y el código usa require() para cargar módulos, la invocación devuelve el código de estado HTTP 200. Además, los encabezados de respuesta incluyen X-Fc-Error-Type: InvocationError y el cuerpo de respuesta contiene el siguiente error:

{
    "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)"
    ]
}

El contenido del error varía según el tipo de archivo de entrada y la ubicación de require():

  • Si el archivo de entrada tiene la extensión .js y package.json define "type": "module", errorMessage incluye una línea 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.

  • Si require() se llama dentro de la función controladora en lugar del nivel superior del módulo, errorMessage es require is not defined.

Causa

require() es la función de carga del sistema de módulos CommonJS y no está disponible en el ámbito de los módulos ES. Una vez que un archivo se identifica como módulo ES, Node.js no inyecta variables de CommonJS como require, module ni exports.

Solución

Elija uno de los siguientes métodos según la estructura de su código:

  • Reescriba require() como instrucciones import de módulos ES. Para cargar un módulo de forma dinámica, utilice la expresión import().

  • Si desea conservar la sintaxis require(), cambie la extensión del archivo de entrada a .cjs. No es necesario modificar la configuración del controlador de la función.

A continuación se muestra un ejemplo de la reescritura con módulos ES (archivo 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');
};

En el siguiente ejemplo se muestra cómo cargar un módulo de forma dinámica:

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

A continuación se muestra un ejemplo con la sintaxis de CommonJS (archivo de entrada index.cjs):

const crypto = require('crypto');

exports.handler = async (event, context) => {
  return crypto.createHash('sha256').digest('hex');
};
Nota: Para cargar una dependencia de terceros (como lodash ), ejecute primero npm install de manera local. Después, empaquete y despliegue el directorio node_modules junto con su código. En los módulos ES, puede hacer referencia a una dependencia de CommonJS mediante una importación predeterminada; por ejemplo, import _ from 'lodash'; .

Los módulos ES solo son compatibles con los entornos de ejecución de Node.js 18 y posteriores. En los entornos de Node.js 16 y anteriores, el archivo de entrada .mjs no se carga. La invocación devuelve "errorMessage": "Module '/code/index.js' is missing." y "errorType": "FunctionUnhandledError: ImportModuleError".