跳至内容

代码节点常见问题#

以下是Code节点常见错误和问题及其解决方法或排查步骤。

代码未正确返回项目#

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

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

1
2
3
4
5
6
7
[
  {
    "json": {
	  // your data goes here
	}
  }
]

要排查此错误,请检查以下内容:

  • 阅读数据结构以了解您在代码节点中接收到的数据以及从节点输出数据的要求。
  • 了解数据项如何运作,以及如何通过项链接将前序节点的数据项连接起来。

'json'属性不是一个对象#

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

如果将json设置为不同的数据结构(如数组),可能会发生这种情况:

1
2
3
4
5
6
7
[
  {
    "json": [
	  // Setting `json` to an array like this will produce an error
	]
  }
]

要解决这个问题,请确保json键引用的是返回数据中的一个对象:

1
2
3
4
5
6
7
[
  {
    "json": {
	  // Setting `json` to an object as expected
	}
  }
]

代码未返回对象#

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

要解决此问题,请确保您的代码节点返回预期的数据结构

1
2
3
4
5
6
7
[
  {
    "json": {
	  // your data goes here
	}
  }
]

如果提供的代码返回'undefined'而非预期结果,也可能出现此错误。在这种情况下,请确保代码节点中引用的数据在每次执行中都存在,并且其结构符合代码预期。

'import' 和 'export' 只能出现在顶层#

当您尝试在代码节点中使用importexport时会出现此错误。n8n的JavaScript沙箱不支持这些语法。请改用require函数来加载模块。

要解决此问题,请尝试将您的import语句改为使用require

1
2
3
4
// Original code:
// import express from "express";
// New code:
const express = require("express");

无法找到模块 ''#

当您尝试在代码节点中使用require而n8n找不到该模块时,会出现此错误。

仅限自托管

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

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

  • Install the module into your n8n environment.
    • 如果您使用npm运行n8n,请在n8n相同的环境中安装该模块。
    • 如果您使用Docker运行n8n,需要通过包含您模块的自定义镜像来扩展官方n8n镜像。
  • 设置 NODE_FUNCTION_ALLOW_BUILTINNODE_FUNCTION_ALLOW_EXTERNAL 环境变量 以允许导入模块。

使用全局变量#

有时您可能希望设置和检索与跨执行和工作流内部相关的简单全局数据。例如,在编译包含项目更新列表的报告时,您可能希望包含上一份报告的日期。

要直接设置、更新和检索工作流中的数据,可在代码中使用静态数据功能。您可以全局管理数据,或将其绑定到特定节点。

尽可能使用移除重复项功能

如果您希望通过使用变量来避免重复处理相同的数据项,可以考虑改用Remove Duplicates节点。该节点能够保存跨执行的信息,从而避免多次处理相同的项目。

优云智算