El entorno de ejecución de Node.js 6

El entorno de ejecución de Node.js 6 para Cloud Functions se basa en la versión 6.14.0 de Node.js. Para obtener instrucciones sobre cómo preparar tu máquina local para la programación en Node.js, consulta Configura un entorno de programación de Node.js.

Para comenzar con Node.js en Cloud Functions, consulta la guía de inicio rápido.

Selecciona el entorno de ejecución

El entorno de ejecución de Node.js 6 generalmente está disponible y es el entorno de ejecución predeterminado seleccionado cuando implementas tu función.

gcloud

Si usas la herramienta de línea de comandos de gcloud, el entorno de ejecución de Node.js 6 está seleccionado de forma predeterminada. Por ejemplo:

gcloud functions deploy NAME --trigger-http

Para obtener más argumentos que puedes especificar cuando implementas una función, consulta Implementa con la herramienta de gcloud.

Console

Si usas GCP Console, puedes seleccionar el entorno de ejecución cuando creas e implementas una función.

  1. En GCP Console, ve a la página Descripción general de Cloud Functions.

    Ir a la página Descripción general de Cloud Functions

    Asegúrate de que el proyecto para el que habilitaste Cloud Functions esté seleccionado.

  2. Haz clic en Crear función.

  3. En Entorno de ejecución, selecciona Node.js 6.

Entorno de ejecución

El entorno de ejecución incluye el tiempo de ejecución, el sistema operativo, los paquetes y una biblioteca que invoca tu función.

Imagen base

Para el entorno de ejecución de Node.js 6, Cloud Functions usa un entorno de ejecución basado en Debian 8. Las actualizaciones al entorno de ejecución de lenguaje se realizan automáticamente (a menos que se notifique algo distinto) y, además, incluyen cambios en la definición de la imagen base.

Biblioteca de HTTP

El entorno de ejecución de Node.js 6 usa ExpressJS para administrar las solicitudes entrantes. Actualmente, el entorno de ejecución de Node.js 6 usa ExpressJS versión 4.16.3. Este auxiliar invoca tu función en respuesta a una solicitud entrante y se encarga de otros detalles, como la administración de HTTP.

Actualizaciones al entorno de ejecución

Este entorno de ejecución recibe actualizaciones automáticas a la versión de Node.js. Por ejemplo, actualmente, Cloud Functions usa Node.js versión 6.14.0. Cuando se lance una nueva versión de Node.js 6 en la comunidad de lenguaje, el entorno de ejecución podría actualizarse.

De manera similar, Cloud Functions podría aplicar actualizaciones a otros aspectos del entorno de ejecución, como el sistema operativo, los paquetes u otros elementos del entorno. Estas actualizaciones ayudan a mantener tus funciones protegidas.

Estructura del código fuente

El código fuente de tu función debe exportarse de un módulo de Node.js, que Cloud Functions carga con una llamada de require(). Con el fin de determinar el módulo que se debe cargar, Cloud Functions usa el campo main en tu archivo package.json. Si el campo main no se especifica, Cloud Functions carga código de index.js.

Por ejemplo, las siguientes configuraciones de código fuente son válidas:

  • Un solo archivo de index.js que exporta una o más funciones.
  • Un archivo index.js que importa código de un archivo foo.js y que exporta una o más funciones.
  • Un archivo app.js que exporta una o más funciones, con un archivo package.json que contiene "main": "app.js".

Cualquier configuración funciona, siempre y cuando la llamada require() pueda cargar la función.

Especifica dependencias

Las funciones pueden usar módulos de Node.js externos y datos locales. Las dependencias de Node.js se administran con npm y se expresan en un archivo de metadatos llamado package.json.

Para especificar una dependencia de tu función, agrégala al archivo package.json. Si deseas realizar la implementación con la herramienta de línea de comandos de gcloud, también puedes instalar las dependencias previamente y, luego, implementarlas junto con tu función. Según la configuración predeterminada, la carpeta node_modules se agrega al archivo .gcloudignore y no se sube como parte de tu implementación. Para implementar las dependencias instaladas previamente, quita node_modules/ del archivo .gcloudignore antes de implementar la función.

Después de que implementas la función, Cloud Functions instala las dependencias que declaraste en el archivo package.json mediante el comando npm install.

En este ejemplo, se muestra una dependencia en el archivo package.json:

{
  "dependencies": {
    "uuid": "^3.0.1"
  }
}

Luego, la dependencia se importa en la función:

const uuid = require('uuid');

// Return a newly generated UUID in the HTTP response.
exports.getUuid = (req, res) => {
  res.send(uuid.v4());
};

Instala módulos de Node.js con npm

La manera más fácil de instalar un módulo de Node.js es usar el comando npm install en la carpeta que contiene tu Cloud Function. Por ejemplo, el siguiente comando agrega el módulo uuid:

npm install uuid

Esto combina dos pasos:

  1. Marca la versión más reciente del módulo como una dependencia en tu archivo package.json. Muy importante: Cloud Functions solo instala módulos declarados en el archivo package.json.
  2. Descarga el módulo a tu directorio node_modules. Esto te permite usar el módulo cuando desarrollas de forma local.

Si no tienes npm instalado en tu computadora, descárgalo.

Carga de módulos Node.js

Usa la función require() de Node.js para cargar los módulos de Node.js que instalaste. También puedes usar require() para importar archivos locales que implementes junto con tu función.

Usa módulos privados

Si quieres usar un módulo npm privado, debes proporcionar credenciales (token de autenticación) para el registro de npm en un archivo .npmrc ubicado en el directorio de la función. En la documentación de npm se explica cómo crear tus propios tokens de acceso de solo lectura. No se recomienda usar el archivo .npmrc que se creó en el directorio principal, pues contiene un token de lectura y escritura. No se necesitan permisos de escritura para la implementación. Además, podrían poner en riesgo la seguridad.

No incluyas el archivo .npmrc si no usas repositorios privados, ya que esto puede aumentar el tiempo de implementación de tus funciones.

Usa middleware para administrar las solicitudes HTTP

Las funciones de HTTP de Cloud Functions para Node.js ofrecen objetos request y response que son compatibles con ExpressJS a fin de simplificar las solicitudes HTTP complejas. Cloud Functions lee automáticamente el cuerpo de la solicitud, de manera que siempre recibirás el cuerpo de una solicitud independientemente del tipo de contenido. Esto quiere decir que estas solicitudes se considerarán como completamente leídas para el momento en que tu código se ejecuta. La anidación de las apps de ExpressJS debe usarse con esta salvedad: específicamente, el middleware que espera que el cuerpo de una solicitud no se haya leído puede que no se comporte como se prevé.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions