Este tema describe cómo instalar dependencias de terceros para su código Node.js, empaquetarlo y desplegarlo en Function Compute. Como ejemplo, se utiliza una biblioteca de dependencias de emojis de terceros.
Preparativos
-
Cree un directorio de código para las pruebas y especifique un nombre para dicho directorio. En este ejemplo, se usa
mycode.-
Linux y macOS
Ejecute el comando
mkdir -p /tmp/mycodepara crear el directorio. -
Windows
Cree una carpeta y asígnele el nombre
mycode.
-
-
Cree el archivo
index.mjsoindex.jsen el directorio mycode.A continuación se muestra un ejemplo de código:
Módulos ECMAScript
NotaEste ejemplo solo es compatible con Node.js 18 o versiones posteriores.
// index.mjs 'use strict'; import * as emoji from 'node-emoji' export const handler = async (event, context) => { console.log('hello world'); return emoji.get(':unicorn:'); }Módulos CommonJS
// index.js 'use strict'; var emoji = require('node-emoji') exports.handler = (event, context, callback) => { console.log('hello world'); callback(null, emoji.get(':unicorn:')); }
Uso de npm para instalar dependencias y desplegar el código
Prerequisites
npm está instalado en su máquina local y cuenta con los permisos necesarios para ejecutar comandos de npm.
Se creó una función de Node.js en la consola de Function Compute. Para obtener más información, consulte Create an event-triggered function.
Procedure
Ejecute el comando
npm install node-emojien el directoriomycodepara instalar la biblioteca de dependencias de emojis en el directorio actual.-
Empaquete todos los archivos del directorio
mycode.-
Linux y macOS
Vaya al directorio
mycodey ejecutezip code.zip -r ./*.NotaAsegúrese de tener permisos de lectura y escritura sobre el directorio.
-
Windows
Vaya al directorio
mycode, seleccione todos los archivos, haga clic derecho sobre ellos y comprímalos en un archivo .zip.
NotaCompruebe que el archivo
index.jsque creó se encuentre en el directorio raíz del paquete. -
-
En la consola de Function Compute, busque la función que desea gestionar. En la esquina superior derecha de la página de detalles de la función, haga clic en Upload Code y cargue el paquete ZIP que preparó.
Una vez cargado el código, haga clic en Test Function dentro de la pestaña Code para comprobar si el código es correcto.
Function Compute se ejecuta en un entorno Linux. Si durante la instalación de la biblioteca de dependencias de emojis en una computadora Windows o macOS se incluye algún archivo binario, el paquete de código no se ejecutará correctamente en Function Compute. Por lo tanto, se recomienda usar WebIDE para empaquetar las dependencias de terceros, o bien utilizar Serverless Devs para instalarlas y desplegar el proyecto. Para obtener más información, consulte Use WebIDE to package third-party dependencies of a function y Use Serverless Devs to install dependencies and deploy the project.
Uso de Serverless Devs para instalar dependencias y desplegar el código
Prerequisites
Serverless Devs y sus dependencias están instalados. Para obtener más información, consulte Get started with Function Compute using Serverless Devs.
Serverless Devs está configurado. Para obtener más información, consulte Configure Serverless Devs.
Procedure
Ejecute el comando
cd /tmp/mycodepara ir al directoriomycode.-
Cree el archivo
s.yaml.El siguiente código de ejemplo muestra cómo editar el archivo:
edition: 3.0.0 name: fcDeployApp access: "default" vars: # The global variables. region: "cn-hangzhou" resources: hello_world: component: fc3 # The name of the component. props: region: ${vars.region} # For information about how to use variables, visit: https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC. functionName: "emoji" description: 'this is emoji' runtime: "nodejs18" code: ./ handler: index.handler memorySize: 128 timeout: 30 -
Agregue el archivo
package.json.El siguiente código de ejemplo muestra cómo editar el archivo:
{ "dependencies": { "node-emoji": "^1.11.0" } } -
Ejecute
sudo s build --use-dockerpara instalar las dependencias.Al finalizar la ejecución, se genera el directorio
.sdentro demycode. Las dependencias quedan instaladas en el directorio.s/build/artifacts/{functionName}. -
Ejecute
sudo s deploypara desplegar el proyecto.Después de la ejecución, su función quedará desplegada en Function Compute.
Nota importante
Cuando se utiliza un runtime personalizado para Node.js y se especifica un archivo ejecutable compilado como comando de inicio, modificar el código fuente directamente en WebIDE no surte efecto. Esto ocurre porque la función sigue ejecutando el archivo compilado previamente. Para aplicar los cambios en el código, actualice el código fuente de manera local, vuelva a compilar y empaquetar el ejecutable, cargue el paquete actualizado en WebIDE y, por último, vuelva a ejecutar la función.
Más información
Si su paquete de código es demasiado grande, separe las dependencias, construya una capa y cargue únicamente el código de negocio. Para obtener más información, consulte los siguientes temas: