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