跳到主要内容

表达式引擎环境变量

信息

通过文件配置

可以为单个变量添加 _FILE 后缀,通过单独的文件提供配置。更多信息请参阅将敏感数据保存在单独的文件中。

表达式是 n8n 在运行时求值的 JavaScript 片段,用于动态设置节点参数。表达式引擎负责求值。本页列出用于配置该引擎的环境变量。

注意

避免使用 legacy 表达式引擎

legacy 引擎在没有隔离的情况下运行表达式,因此对恶意表达式的防护弱于沙箱引擎。n8n 计划在未来版本中弃用 legacy。要获得最强的安全防护:

  • 保持 N8N_EXPRESSION_ENGINE 为后端默认值 vm。
  • 将 N8N_EXPRESSION_ENGINE_FRONTEND 设为 quickjs。编辑器当前仍默认使用 legacy。

选择表达式引擎 ​

n8n 会在两个位置求值表达式,每处都有独立的引擎设置:

  • 后端:工作流运行时,由 n8n 服务器求值表达式,通过 N8N_EXPRESSION_ENGINE 选择引擎。
  • 编辑器:构建工作流时,浏览器会求值表达式,例如预览结果,通过 N8N_EXPRESSION_ENGINE_FRONTEND 选择引擎。

这两项设置相互独立。

变量类型默认值说明
N8N_EXPRESSION_ENGINE枚举字符串: vm, quickjs, legacyvm后端使用的表达式引擎。vm 在沙箱隔离的 V8 环境中运行表达式;quickjs 在编译为 WebAssembly 的 QuickJS 沙箱中运行;legacy 不提供隔离,n8n 计划将其弃用。自 n8n 2.35.0 起,默认值为 vm;更早版本默认使用 legacy。
N8N_EXPRESSION_ENGINE_FRONTEND枚举字符串: legacy, quickjslegacy浏览器中的编辑器所用的表达式引擎。quickjs 在编译为 WebAssembly 的 QuickJS 沙箱中运行表达式,与页面其他部分隔离;legacy 不提供隔离。n8n 强烈建议使用 quickjs。自 n8n 2.41.0 起提供。

配置后端沙箱引擎 ​

以下变量配置后端的 vm 和 quickjs 引擎。当 N8N_EXPRESSION_ENGINE 为 legacy 时不生效,也不影响编辑器引擎。

变量类型默认值说明
N8N_EXPRESSION_ENGINE_POOL_SIZENumber1池中保持预热状态的沙箱数量。
N8N_EXPRESSION_ENGINE_MAX_CODE_CACHE_SIZENumber1024缓存的已编译表达式数量上限。
N8N_EXPRESSION_ENGINE_TIMEOUTNumber5000每次表达式求值的执行超时,单位为毫秒。
N8N_EXPRESSION_ENGINE_MEMORY_LIMITNumber128每个沙箱的内存上限,单位为 MiB。
N8N_EXPRESSION_ENGINE_IDLE_TIMEOUTNumber-设置后,无活动达到指定秒数时,池中的预热沙箱数量会缩减为零。

相关资源 ​

本文为社区中文翻译。查看对应英文原文