代码节点常见问题#
以下是代码节点的常见错误与问题及其解决方法或排查步骤。
代码未正确返回数据项#
当代码节点中的代码未按预期格式返回数据时,会出现此错误。
在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' 仅允许出现在顶层#
若在代码节点中使用 import 或 export 将触发此错误。n8n 的 JavaScript 沙盒环境不支持这 两种语法,请改用 require 函数加载模块。
解决方法:尝试将 import 语句修改为 require 语法:
// Original code:
// import express from "express";
// New code:
const express = require("express");
无法找到模块 '<模块>'#
当您在代码节点中使用 require 但 n8n 无法找到对应模块时会出现此错误。
仅适用于自托管版本
n8n 不支持在云端版本中导入模块。
若您正在自托管 n8n,请按以下步骤操作:
- 将模块安装到 n8n 环境中
- 设置
NODE_FUNCTION_ALLOW_BUILTIN和NODE_FUNCTION_ALLOW_EXTERNAL环境变量以允许导入模块
使用全局变量#
有时您可能需要跨工作流执行周期设置和获取简单的全局数据。例如,在编译包含项目更新列表的报告时,可能需要引用前次报告的生成日期。
要通过代码直接向工作流设置、更新和获取数据,请使用静态数据函数。您可管理全局数据或绑定至特定节点的数据。
尽可能使用去重功能
若想通过变量避免重复处理相同数据项,建议改用去重节点。该节点可跨执行周期保存信息,避免对相同项进行多次处理。