Solucionando el Error “Cannot find module ‘axios'” en n8n

Solucionando el Error “Cannot find module ‘axios'” en n8n
  • Save

Si estás trabajando con n8n y has intentado utilizar axios dentro de un nodo de código (Code), es posible que te hayas encontrado con el siguiente error:



{
  "errorMessage": "Cannot find module 'axios' [line 1]",
  "errorDescription": "VMError",
  "n8nDetails": {
    "nodeName": "Code",
    "nodeType": "n8n-nodes-base.code",
    "n8nVersion": "1.80.4 (Self Hosted)"
  }
}

Este error ocurre porque, por defecto, n8n restringe el uso de módulos externos en los nodos de código. A continuación, veremos cómo solucionar este problema.


🔹 Paso 1: Instalar axios

Si aún no has instalado axios, puedes hacerlo ejecutando el siguiente comando:

npm install -g axios

Si estás utilizando Docker, instala axios dentro del contenedor de n8n con:

docker exec -it n8n npm install -g axios

🔹 Paso 2: Habilitar el uso de módulos externos en n8n

Para permitir que axios se utilice dentro de un nodo de código en n8n, debes configurar la variable de entorno NODE_FUNCTION_ALLOW_EXTERNAL.

Opción 1: Configurar en Docker

Si usas Docker, edita tu archivo docker-compose.yml y agrega lo siguiente dentro del bloque environment:

environment:
  - NODE_FUNCTION_ALLOW_EXTERNAL=axios

Luego, reinicia el contenedor:

docker-compose down && docker-compose up -d

Opción 2: Configurar en un Servidor Local

Si estás ejecutando n8n sin Docker, exporta la variable de entorno manualmente antes de iniciar n8n:

export NODE_FUNCTION_ALLOW_EXTERNAL=axios
n8n start

🔹 Paso 3: Usar axios en el Nodo de Código

Después de configurar la variable de entorno, puedes utilizar axios en n8n con global.require de la siguiente manera:

const axios = global.require('axios');

async function main() {
  const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');
  return response.data;
}

return main();

Si el error persiste, prueba ejecutando este código para verificar si require está disponible:

return global;

Si require no aparece en la salida, significa que la configuración de n8n aún no permite el uso de módulos externos.


🚀 Conclusión

El error Cannot find module 'axios' en n8n se debe a que los módulos externos están deshabilitados por defecto en los nodos de código. Para solucionarlo, es necesario:

  1. Instalar axios en tu entorno.
  2. Habilitar NODE_FUNCTION_ALLOW_EXTERNAL=axios en la configuración de n8n.
  3. Utilizar global.require('axios') dentro del nodo de código.

Con estos pasos, ya podrás utilizar axios sin problemas en n8n para hacer peticiones HTTP dentro de tus flujos de automatización. 🚀

Comments

No comments yet. Why don’t you start the discussion?

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.