Administra las 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.

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:

JavaScript

const uuid = require('uuid');

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

TypeScript

import * as uuid from 'uuid';

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

Cómo instalar 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.

Pasos adicionales para TypeScript

TypeScript te ayuda mucho más cuando usas bibliotecas que tienen información sobre tipos. Esto permite que TypeScript detecte errores de sintaxis y que los editores te ofrezcan mejores sugerencias de autocompletado. Algunas bibliotecas, como firebase-admin y firebase-functions, se envían con las definiciones de TypeScript incluidas.

Muchas bibliotecas no proporcionan definiciones de TypeScript. El proyecto DefinitelyTyped proporciona definiciones con mantenimiento de la comunidad para las bibliotecas de nodos más populares. DefinitelyTyped publica estas definiciones con el mismo nombre del paquete NPM, pero dentro de la organización "@types". Por ejemplo, a fin de instalar la información sobre tipos para la biblioteca uuid, puedes usar este comando:

npm install @types/uuid

Cuando estés más familiarizado con TypeScript, podrás combinar ambas instalaciones:

npm install uuid @types/uuid

Las dependencias de tipo deberían ser del mismo tipo que las de la biblioteca. Por ejemplo, no deberías guardar uuid como una dependencia normal y @types/uuid como una dependencia de programación o de par.

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.

Si escribes funciones en TypeScript, usa la declaración import de la misma forma para cargar los módulos Node.js que tengas instalados.

Uso de módulos privados

Si quieres usar un módulo de 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.

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.