n8n v1.0 迁移指南#
本文档概述了在升级到 n8n 1.0 版本前需要注意的事项。
n8n 1.0 的发布标志着 n8n 发展历程中的一个重要里程碑,使其能够满足严苛的生产环境需求。1.0 版本凝聚了过去四年的大量工作,旨在使 n8n 成为最易用、最强大且最多功能的自动化工具。n8n 1.0 现已准备好投入生产环境使用。
新功能#
代码节点支持 Python#
虽然 JavaScript 仍然是默认语言,但您现在可以在代码节点中选择 Python 作为编程语言选项,甚至可以使用众多 Python 模块。请注意,在 v1.0 之前添加到工作流中的代码节点无法使用 Python 功能。
执行顺序#
n8n 1.0 为多分支工作流引入了新的执行顺序:
在多分支工作流中,n8n 需要确定分支上节点的执行顺序。此前,n8n 会先执行每个分支的第一个节点,然后是每个分支的第二个节点,以此类推(广度优先)。新的执行顺序确保每个分支完全执行完毕后再开始下一个分支(深度优先)。分支按照在画布上的位置从上到下执行。如果两个分支处于同一高度,则最左侧的分支优先执行。
n8n 过去只要多输入节点的第一个输入接收到数据就会执行。连接到多输入节点第二个输入的节点无论是否接收到数据都会自动执行。n8n 1.0 引入的新执行顺序简化了这一行为:节点现在仅在接收到数据时才会执行,且多输入节点需要至少一个输入接收到数据才会执行。
您现有的工作流将继续使用旧版执行顺序,而新工作流将使用 v1 执行顺序。您可以在工作流设置中为每个工作流配置执行顺序。
弃用功能#
MySQL 和 MariaDB#
n8n 已移除对 MySQL 和 MariaDB 作为存储后端的支持。这些数据库系统仅被少数用户使用,却需要持续的开发和维护工作。n8n 建议迁移到 PostgreSQL 以获得更好的兼容性和长期支持。
EXECUTIONS_PROCESS 与 "own" 模式#
此前,您可以使用 EXECUTIONS_PROCESS
环境变量来指定执行应在 main
主进程还是 own
独立进程中运行。此选项及 own
模式现已弃用,并将在未来的 n8n 版本中移除。这是因为该功能增加了代码复杂度,却只带来边际效益。从 n8n 1.0 开始,main
将成为新的默认模式。
请注意,在 main
模式下执行启动速度比 own
模式快得多。然而,如果某个工作流消耗的内存超过可用量,可能会导致整个 n8n 应用崩溃,而不仅仅是工作线程。为缓解此问题,请确保分配足够的系统资源或配置队列模式以在多个工作线程间分配执行任务。
重大变更#
Docker#
权限变更#
在使用基于 Docker 的部署时,n8n 进程现在由用户 node
而非 root
运行。此变更提高了安全性。
如果在启动 n8n 时容器日志中出现权限错误,您可能需要在 Docker 主机上执行以下命令更新权限:
1 |
|
镜像移除#
我们已移除 Debian 和 RHEL 镜像。如果您正在使用这些镜像,需要更换使用的镜像。除非您基于这些镜像制作了自定义镜像,否则不会导致任何错误。
入口点变更#
容器的入口点已变更,您不再需要指定 n8n 命令。如果您之前运行的是 n8n worker --concurrency=5
,现在应改为 worker --concurrency=5
。
表达式错误导致的工作流失败#
工作流执行可能因表达式中的语法或运行时错误而失败,例如引用了不存在的节点。虽然表达式在前端已经会抛出错误,但此项变更确保 n8n 在后端也会抛出错误(之前这些错误会被静默忽略)。为了接收工作流失败通知,n8n 建议在工作流设置中配置"错误工作流"。
强制要求所有者账户#
此项变更使用户管理成为强制要求,并移除了对其他认证方式的支持(如 BasicAuth 和外部 JWT)。请注意,n8n.cloud 或定制方案中允许的用户数量仍取决于您的订阅计划。
自定义节点的安装目录#
n8n 将不再从全局 node_modules
目录加载自定义节点。您必须将自定义节点安装(或链接)到 ~/.n8n/custom
目录(或由 N8N_CUSTOM_EXTENSIONS
环境变量定义的目录)。作为 npm 包的自定义节点将存放在 ~/.n8n/nodes
目录。
如果您之前使用 npm link
将自定义节点链接到全局 node_modules
目录,现在需要重新将它们链接到 ~/.n8n/nodes
目录。
WebSocket 支持#
N8N_PUSH_BACKEND
环境变量可用于配置两种向用户界面推送更新的方法之一:sse
或 websocket
。从 n8n 1.0 开始,websocket
成为默认方法。
日期转换函数#
n8n 提供了多种用于操作日期的转换函数。这些函数可能返回 JavaScript 的 Date
对象或 Luxon 的 DateTime
对象。在新行为中,返回类型始终与输入类型匹配。如果在 Date
对象上调用日期转换函数,它将返回 Date
对象。同样,如果在 DateTime
对象上调用,它将返回 DateTime
对象。
要识别可能受此更改影响的工作流和节点,您可以使用这个实用工作流。
有关日期转换函数的更多信息,请参阅官方文档。
执行数据保留#
从 n8n 1.0 开始,默认情况下将保存所有成功、失败和手动触发的工作流执行。这些设置可以在"工作流设置"中为每个工作流单独修改,或使用相应的环境变量进行全局配置。此外,EXECUTIONS_DATA_PRUNE
设置将默认启用,EXECUTIONS_DATA_PRUNE_MAX_COUNT
默认设置为 10,000。这些默认设置旨在防止使用 SQLite 时出现性能下降。请根据您的具体需求和系统容量进行配置。
移除 N8N_USE_DEPRECATED_REQUEST_LIB#
传统的 request
库已被弃用多时。从 n8n 1.0 开始,通过设置 N8N_USE_DEPRECATED_REQUEST_LIB
环境变量在 HTTP Request 节点中回退到该库的功能已被完全移除。HTTP Request 节点现在将始终使用新的 HttpRequest
接口。
如果您构建自定义节点,请参考 HTTP 请求助手 获取有关迁移到新接口的更多信息。
移除 WEBHOOK_TUNNEL_URL#
从版本 0.227.0 开始,n8n 已将 WEBHOOK_TUNNEL_URL
配置选项重命名为 WEBHOOK_URL
。在 n8n 1.0 中,WEBHOOK_TUNNEL_URL
已被移除。请更新您的设置以使用新名称。有关此配置选项的更多信息,请参阅 文档。
移除 Node 16 支持#
n8n 现在需要 Node 18.17.0 或更高版本。
升级到 n8n 1.0#
- 创建 n8n 的完整备份。
- n8n 建议在升级到 n8n 1.x 之前先升级到最新的 n8n 0.x 版本。这将帮助您准确定位任何潜在问题到正确的版本。一旦确认 n8n 0.x 可以无问题启动,请继续下一步。
- 仔细阅读上述 弃用功能 和 重大变更 部分,评估它们可能对您的设置产生的影响。
- 升级到 n8n 1.0:
- 测试阶段(2023年7月24日前):如果使用 Docker,请拉取
next
镜像。 - 2023年7月24日后:如果使用 Docker,请拉取
latest
镜像。
- 测试阶段(2023年7月24日前):如果使用 Docker,请拉取
- 如果遇到任何问题,请重新部署之前的 n8n 版本并恢复备份。
问题报告#
如果在升级到 n8n 1.0 的过程中遇到任何问题,请在社区论坛寻求帮助。
致谢#
我们想借此机会向所有用户表达诚挚的感谢,感谢您持续的支持与反馈。您的贡献对于帮助我们将 n8n 打造成最好的自动化工具至关重要。随着 1.0 版本及后续版本的发布,我们期待继续与您携手同行。感谢您参与我们的成长旅程!