n8n v1.0 迁移指南#
本文档提供了在更新到 n8n 1.0 版本之前应该了解的内容摘要。
n8n 1.0 的发布标志着 n8n 在使 n8n 可用于要求苛刻的生产环境方面的一个里程碑。版本 1.0 代表了过去四年投入的辛勤工作,使 n8n 成为最易访问、最强大和最通用的自动化工具。n8n 1.0 现在已准备好在生产中使用。
新功能#
Code 节点中的 Python 支持#
虽然 JavaScript 仍然是默认语言,但您现在也可以在 Code 节点中选择 Python 作为选项,甚至可以使用许多 Python 模块。请注意,在 v1.0 之前添加到工作流的 Code 节点中不可用 Python。
执行顺序#
n8n 1.0 为多分支工作流引入了新的执行顺序:
在多分支工作流中,n8n 需要确定执行分支上节点的顺序。以前,n8n 执行每个分支的第一个节点,然后是每个分支的第二个节点,依此类推(广度优先)。新的执行顺序确保每个分支在开始下一个分支之前完全执行(深度优先)。分支根据它们在画布上的位置从上到下执行。如果两个分支在同一高度,最左边的分支首先执行。
n8n 过去只要在第一个输入上接收到数据,就会执行多输入节点。连接到多输入节点第二个输入的节点会自动执行,无论它们是否接收到数据。n8n 1.0 中引入的新执行顺序简化了这种行为:节点现在只有在接收到数据时才执行,多输入节点需要在至少一个输入上有数据才能执行。
您现有的工作流将使用旧版顺序,而新工作流将使用 v1 顺序执行。您可以在工作流设置中为每个工作流配置执行顺序。
弃用#
MySQL 和 MariaDB#
n8n 已移除对 MySQL 和 MariaDB 作为 n8n 存储后端的支持。这些数据库系统只被少数用户使用,但它们需要持续的开发和维护工作。n8n 建议迁移到 PostgreSQL 以获得更好的兼容性和长期支持。
EXECUTIONS_PROCESS 和 "own" 模式#
以前,您可以使用 EXECUTIONS_PROCESS
环境变量来指定执行应该在 main
进程中运行还是在它们自己的 own
进程中运行。此选项和 own
模式现在已弃用,将在 n8n 的未来版本中删除。这是因为它导致代码复杂性增加,而收益微乎其微。从 n8n 1.0 开始,main
将成为新的默认值。
请注意,在 main
模式下执行启动比在 own
模式下快得多。但是,如果工作流消耗的内存超过可用内存,它可能会崩溃整个 n8n 应用程序,而不仅仅是工作线程。为了缓解这种情况,请确保分配足够的系统资源或配置队列模式以在多个工作进程之间分配执行。
重大变更#
Docker#
权限变更#
使用基于 Docker 的部署时,n8n 进程现在由用户 node
而不是 root
运行。此更改增加了安全性。
如果在启动 n8n 时在 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
。
WebSockets#
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
Docker 镜像。 - 2023年7月24日之后:如果使用 Docker,拉取
latest
Docker 镜像。
- 在测试期间(2023年7月24日之前):如果使用 Docker,拉取
- 如果遇到任何问题,重新部署之前的 n8n 版本并恢复备份。
报告问题#
如果您在更新到 n8n 1.0 的过程中遇到任何问题,请在社区论坛中寻求帮助。
感谢#
我们想花一点时间向所有用户表达我们的感谢,感谢他们的持续支持和反馈。您的贡献对于帮助我们使 n8n 成为最好的自动化工具是无价的。我们很兴奋能够继续与您合作,随着我们发布版本 1.0 及更高版本而前进。感谢您成为我们旅程的一部分!