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应用崩溃,而不仅仅是工作线程。为了缓解这个问题,请确保分配足够的系统资源或配置queue mode以在多个工作线程之间分配执行任务。
重大变更#
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中。
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 请求节点中回退到该库的功能已被完全移除。HTTP 请求节点现在将始终使用新的 HttpRequest 接口。
如果您构建自定义节点,请参考HTTP request helpers获取有关迁移到新接口的更多信息。
移除 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 能正常启动且无任何问题,即可继续下一步操作。
- 仔细阅读上面的废弃功能和重大变更部分,评估它们可能对您的设置产生的影响。
- Update to n8n 1.0:
- 测试期间(2023年7月24日前):如果使用Docker,请拉取
nextDocker镜像。 - 2023年7月24日后:如果使用Docker,请拉取
latestDocker镜像。
- 测试期间(2023年7月24日前):如果使用Docker,请拉取
- 如果遇到任何问题,请重新部署之前的n8n版本并恢复备份。
报告问题#
如果在升级到n8n 1.0的过程中遇到任何问题,请在社区论坛寻求帮助。
感谢#
我们想借此机会向所有用户表达诚挚的感谢,感谢您持续的支持与反馈。您的贡献对于帮助我们将n8n打造成最优秀的自动化工具至关重要。随着1.0版本及后续版本的发布,我们期待继续与您携手同行。感谢您参与我们的成长之旅!