跳到主要内容

代码节点常见问题#

以下是代码节点的常见错误与问题及其解决方法或排查步骤。

代码未正确返回数据项#

当代码节点中的代码未按预期格式返回数据时,会出现此错误。

在n8n中,所有节点间传递的数据均为对象数组。每个对象都通过json键包装另一个对象:

[
{
"json": {
// your data goes here
}
}
]

排查此错误时,请检查以下事项:

  • 阅读数据结构,了解在代码节点中接收的数据以及从节点输出数据的要求。
  • 理解数据项的工作原理,以及如何通过数据项链接连接先前节点的数据项。

'json'属性不是对象#

当代码节点返回的数据中json键指向的不是对象时,会出现此错误。

如果将json设置为其他数据结构(例如数组),则可能发生这种情况:

[
{
"json": [
// Setting `json` to an array like this will produce an error
]
}
]

为解决此问题,请确保 json 键指向返回数据中的对象:

[
{
"json": {
// Setting `json` to an object as expected
}
}
]

代码未返回对象#

当您的代码节点未返回任何内容或返回意外结果时,可能会出现此错误。

解决方法:请确保代码节点返回预期数据结构

[
{
"json": {
// your data goes here
}
}
]

若您提供的代码返回了 'undefined' 而非预期结果,也可能引发此错误。此时请确保:在每次执行时,代码节点所引用的数据均存在,且其结构符合代码预期。

'import' 与 'export' 仅允许出现在顶层#

若在代码节点中使用 importexport 将触发此错误。n8n 的 JavaScript 沙盒环境不支持这两种语法,请改用 require 函数加载模块。

解决方法:尝试将 import 语句修改为 require 语法:

// Original code:
// import express from "express";
// New code:
const express = require("express");

无法找到模块 '<模块>'#

当您在代码节点中使用 require 但 n8n 无法找到对应模块时会出现此错误。

仅适用于自托管版本

n8n 不支持在云端版本中导入模块。

若您正在自托管 n8n,请按以下步骤操作:

  • 将模块安装到 n8n 环境中
    • 若通过 npm 运行 n8n,请在 n8n 所在相同环境中安装模块
    • 若通过 Docker 运行 n8n,需基于官方 n8n 镜像构建自定义镜像来包含所需模块
  • 设置 NODE_FUNCTION_ALLOW_BUILTINNODE_FUNCTION_ALLOW_EXTERNAL 环境变量以允许导入模块

使用全局变量#

有时您可能需要跨工作流执行周期设置和获取简单的全局数据。例如,在编译包含项目更新列表的报告时,可能需要引用前次报告的生成日期。

要通过代码直接向工作流设置、更新和获取数据,请使用静态数据函数。您可管理全局数据或绑定至特定节点的数据。

尽可能使用去重功能

若想通过变量避免重复处理相同数据项,建议改用去重节点。该节点可跨执行周期保存信息,避免对相同项进行多次处理。