大数跨境
0
0

n8n 自动化 - 安装使用 npm 外部模块

n8n 自动化 - 安装使用 npm 外部模块 数翼
2025-07-04
0
导读:本文讲述如何安装外部 Npm 库,并使用 JavaScript 代码节点,引入外部 JS 库执行。

n8n 的代码节点可以执行 JavaScript , 这让我们处理数据的能力得到了很大的提升。

大多数场景下我们使用 JavaScript 代码节点的逻辑处理能力基本就能完成我们需要的数据处理能力, 但是有一些特殊场景,或者对一些偷懒的程序员,在使用 n8n 的时候希望更大的开放n8n的代码能力,那就需要引入各种的外部库了。

今天就讲一下 JavaScript 代码节点,怎么引入外部 JS 库。

n8n 内置库

n8n 提供了一些常用的库,无需安装即可使用,也基本满足了我们的日常需求。

  • • lodash - 数据处理和操作工具库
  • • moment - 日期时间处理
  • • axios - HTTP 请求库
  • • crypto - 加密相关功能
  • • uuid - 生成唯一标识符
  • • cheerio - 服务器端 jQuery 实现,用于 HTML 解析
  • • xml2js - XML 解析和构建
如果是使用 n8n Cloud 版本,代码节点默认不允许引入外部包,只能使用 n8n 提供的 Crypto 和 Moment 两个模块。

解除代码限制

出于安全原因,n8n 代码节点限制导入模块,也就是默认智能使用基本的代码逻辑来处理数据。 但是这样明显限制了「代码节点」的威力,n8n 可以通过设置以下环境变量来解除内置模块和外部模块的限制:

  • • NODE_FUNCTION_ALLOW_BUILTIN:对于内置模块
  • • NODE_FUNCTION_ALLOW_EXTERNAL:适用于来自 n8n/node_modules 目录的外部模块。未设置环境变量时,外部模块支持将被禁用。

比如:

Allows usage of all builtin modules
export NODE_FUNCTION_ALLOW_BUILTIN=*

Allows usage of only crypto
export NODE_FUNCTION_ALLOW_BUILTIN=crypto

Allows usage of only crypto and fs
export NODE_FUNCTION_ALLOW_BUILTIN=crypto,fs

Allow usage of external npm modules.
export NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash

为了开发和演示方便,我们都设置为 *

export NODE_FUNCTION_ALLOW_BUILTIN=*
export NODE_FUNCTION_ALLOW_EXTERNAL=*

使用 Docker 运行

如果是在 Docker 中运行 n8n,需要构建 Docker 镜像的时候安装,加入如下代码填入你需要安装 的包即可:

# Dockerfile
...
USER root
# 安装所需的 npm 包
RUN npm install -g papaparse node-os-utils csvtojson json2csv
USER node
...

使用 Docker 运行时环境变量一般在运行的时候传入,或者使用 compose 设置, 而不是在 Dockerfile 里面设置, 这样构建出来的镜像更通用。

使用 npm 运行

直接 npm install -g 即可。

使用外部库

我们用外部工具库 node-os-utils 来做一个测试。

node-os-utils 是一个用于获取操作系统信息和性能指标的 Node.js 库。 它提供了跨平台的功能,可以在 Windows、macOS、Linux 等操作系统上运行。

我们用 AI 生成一段代码

生成 n8n code node 代码,使用 node-os-utils 库获取系统信息。
node-os-utils 库获取系统信息
n8n Code 节点要使用  const osUtils = require('node-os-utils')  的语法来引入库。

标准 n8n 服务

我们现在使用标准的 n8n 服务(没有安装 node-os-utils 库) 执行这个 Code 节点,输入刚才生成的代码 点击执行,会发现报错 Cannot find module 'node-os-utils'

无法执行代码节点

自定义 n8n 服务

然后我们使用安装了 'node-os-utils' 包的自定义镜像来运行:

可以看到节点成功执行且输出结果(我当前电脑的内存、磁盘、负载等数据):

节点成功执行

为了方便起见,我们把输出的数据稍微可视化一下,添加一个 Quick Chart 节点。

简单配置下 内存和磁盘使用情况:

Quick Chart 显示

总结

虽然 n8n 可以安装外部 Npm 包,使用代码节点可以执行 JavaScript 代码, 但是代码节点的主要用途还是处理数据,我们也不要滥用。

安装外部节点会带来一些代价和可能的问题:

  • • 复杂度提升
  • • 外部库更新不及时或依赖的库更新不及时导致无法使用
  • • 外部库和标准库冲突导致无法使用
  • • 外部库有安全问题
  • • 未来无法迁移到云端

适合使用外部库的场景,

  • • 企业内部标准化的或者常用的库
  • • 处理简单的逻辑

不太适合的场景:

  • • 处理复杂的逻辑
  • • 调用第三方 API
  • • 可以通过其他节点完成的功能

--- END ---




建了个群,大家对 n8n 和 AI 智能体感兴趣的可以加入一起讨论。

群聊:n8n 自动化和 AI Agent 交流群


【声明】内容源于网络
0
0
数翼
专注 AIGC 人工智能知识传播和实践
内容 228
粉丝 0
数翼 专注 AIGC 人工智能知识传播和实践
总阅读13
粉丝0
内容228