Qual a melhor forma de rodar no n8n um script que requer pacotes externos (por exemplo, pacotes npm ou módulos Python)? O n8n oferece suporte nativo para instalar/gerenciar dependências ou preciso empacotar/usar uma imagem customizada?
Qual a melhor forma de rodar no n8n um script que requer pacotes externos (por exemplo, pacotes npm ou módulos Python)? O n8n oferece suporte nativo para instalar/gerenciar dependências ou preciso empacotar/usar uma imagem customizada?
Oii, Helder.
A melhor forma de rodar no n8n scripts que dependem de pacotes externos, seja npm ou módulos Python, depende do tipo de instalação que você está usando. O ponto central é que o n8n não instala dependências automaticamente dentro do nó de código. Ele executa JavaScript e Python em ambientes controlados, o que impede que você chame diretamente comandos como npm install ou pip install a partir do próprio fluxo.
Quando você precisa usar bibliotecas externas, o caminho correto é preparar o ambiente onde o n8n está rodando. Se você utiliza n8n em uma instalação própria, como Docker ou servidor local, pode criar uma imagem personalizada. Essa imagem é baseada na imagem oficial do n8n, mas inclui instalações adicionais feitas previamente. Assim, quando o fluxo for executado, o pacote já estará disponível no sistema e o n8n conseguirá importá-lo sem erro. No caso do JavaScript, ainda é necessário configurar variáveis de ambiente como NODE_FUNCTION_ALLOW_EXTERNAL, pois o n8n bloqueia módulos por padrão mesmo que estejam instalados. Essa variável define quais módulos o nó de código tem permissão de acessar.
Para Python, ocorre algo parecido. O n8n pode executar Python de duas formas: por Pyodide, que roda no navegador e aceita apenas um conjunto pequeno de bibliotecas, ou por runners externos, que rodam Python “de verdade”. Para usar módulos externos no runner Python, o pacote precisa estar previamente instalado na imagem ou no servidor, e a lista de módulos permitidos deve ser atualizada. Dessa forma, o import funcionará normalmente dentro do fluxo.
Se você usa n8n Cloud, não será possível instalar ou gerenciar bibliotecas externas. Nesse caso, a solução é expor seu código como um microserviço externo, seja uma API simples ou um script rodando em outro servidor, e o n8n apenas consome esse serviço via HTTP ou outra integração.