Instalar bibliotecas externas de Node.js
Instalar bibliotecas externas de Node.js
Roberty incluye ya bastantes bibliotecas de JavaScript disponibles en la acción Código JavaScript (axios, lodash, moment, fs-extra y muchas más). Cuando necesites una que no venga incluida, puedes instalarla a mano y usarla con normalidad en tu código.
Cómo funciona
Cada robot compilado tiene su propia carpeta dentro del AppData de Roberty:
C:\Users\{Usuario}\AppData\Roaming\roberty-v4\robots\{id-del-robot}\
Esa carpeta contiene el index.js compilado y una carpeta node_modules donde viven las dependencias. Cualquier paquete instalado ahí queda disponible para el JavaScript del robot.
Roberty usa su propio Node.js (versión 22), en:
C:\Users\{Usuario}\AppData\Roaming\roberty-v4\vendor\node\22.16.0\
Paso 1 — Compilar el robot
Antes de instalar nada, el robot tiene que haberse compilado al menos una vez para que su carpeta exista.
- Abre el robot en el Designer.
- Haz clic en Compilar.
Paso 2 — Encontrar la carpeta del robot
- Abre el Explorador de archivos y ve a:
C:\Users\{Usuario}\AppData\Roaming\roberty-v4\robots\
- Las carpetas llevan el nombre del ID del robot. Identifica la correcta por su fecha de modificación: la más reciente es el robot que acabas de compilar.
Pega %APPDATA%\roberty-v4\robots\ directamente en la barra de direcciones del Explorador de archivos y pulsa Enter.
Paso 3 — Abrir un terminal en la carpeta del robot
- Con la carpeta del robot abierta en el Explorador de archivos, haz clic en la barra de direcciones.
- Escribe
cmdy pulsa Enter para abrir un Símbolo del sistema en ese directorio.
Paso 4 — Instalar la biblioteca
Usa el npm que viene con Roberty:
"%APPDATA%\roberty-v4\vendor\node\22.16.0\npm.cmd" install nombre-del-paquete
Por ejemplo, instalar cheerio para analizar HTML:
"%APPDATA%\roberty-v4\vendor\node\22.16.0\npm.cmd" install cheerio
Espera a que npm lo descargue e instale. Después, el node_modules de la carpeta del robot contiene el paquete.
Paso 5 — Usar la biblioteca en el código
En la acción Código JavaScript, importa el paquete con una importación dinámica (import()). El JavaScript del robot se ejecuta en contexto de módulo ES, así que require() no está disponible.
const { load } = await import('cheerio')
const html = actions["buscarPagina"]["value"]
const $ = load(html)
const titulo = $('h1').text()
return titulo
import() y no require()?El código que compila Roberty usa módulos ES. Dentro de un módulo ES, require() no funciona: usa siempre la importación dinámica await import('paquete').
Formas habituales de importación dinámica
// Export por defecto
const { default: nombreDelPaquete } = await import('nombre-del-paquete')
// Exports con nombre
const { funcionA, funcionB } = await import('nombre-del-paquete')
// Todo en un objeto
const modulo = await import('nombre-del-paquete')
modulo.algunaFuncion()
Recompilar no elimina tus paquetes
Al recompilar el robot, Roberty ejecuta npm install para garantizar sus propias dependencias internas, pero no elimina los paquetes extra que instalaste a mano. Los tuyos permanecen en node_modules entre recompilaciones.
Si eliminas el robot y vuelves a crearlo, o si la carpeta se borra a mano, habrá que instalar los paquetes de nuevo.
Solución de problemas
import() devuelve «Cannot find module».
Comprueba que el paquete fue a la carpeta correcta —la del robot, no otra—. Confirma que el node_modules de la carpeta del robot lo contiene.
npm.cmd devuelve un error de permisos.
Ejecuta el Símbolo del sistema como Administrador e inténtalo otra vez.
No sé qué carpeta es la de mi robot.
Recompila el robot y busca la carpeta modificada más recientemente dentro de %APPDATA%\roberty-v4\robots\.
Siguientes pasos
- Código JavaScript — la referencia completa de la acción
- Instalar bibliotecas externas de Python — el equivalente para la acción de código Python