[ PROMPT_NODE_28096 ]
N8n Code Python 错误模式
[ SKILL_DOCUMENTATION ]
# 错误模式 - Python 代码节点
常见的 Python 代码节点错误及其修复方法。
---
## 错误概览
**Python 代码节点 5 大常见错误**:
1. **ModuleNotFoundError** - 尝试导入外部库(Python 特有)
2. **Empty Code / Missing Return** - 没有代码或缺少 return 语句
3. **KeyError** - 未使用 .get() 进行字典访问
4. **IndexError** - 未进行边界检查的列表访问
5. **Incorrect Return Format** - 返回了错误的数据结构
这 5 个错误涵盖了绝大多数 Python 代码节点的故障。
---
## 错误 #1: ModuleNotFoundError (最关键)
**频率**:在 Python 代码节点中非常常见
**含义**:尝试导入不可用的外部库。
### 问题所在
python
# ❌ 错误:外部库不可用
import requests # ModuleNotFoundError: No module named 'requests'
import pandas # ModuleNotFoundError: No module named 'pandas'
import numpy # ModuleNotFoundError: No module named 'numpy'
import bs4 # ModuleNotFoundError: No module named 'bs4'
import pymongo # ModuleNotFoundError: No module named 'pymongo'
import psycopg2 # ModuleNotFoundError: No module named 'psycopg2'
# 此代码将失败 - 这些库未安装!
response = requests.get("https://api.example.com/data")
### 解决方案
**选项 1: 改用 JavaScript**(95% 的情况下推荐)
javascript
// ✅ 使用 $helpers.httpRequest() 的 JavaScript 代码节点
const response = await $helpers.httpRequest({
method: 'GET',
url: 'https://api.example.com/data'
});
return [{json: response}];
**选项 2: 使用 n8n HTTP Request 工具节点**
python
# ✅ 在 Python 代码节点之前添加 HTTP Request 节点
# 在 Python 代码节点中访问响应
response = _input.first()["json"]
return [{
"json": {
"status": response.get("status"),
"data": response.get("body"),
"processed": True
}
}]
**选项 3: 仅使用标准库**
python
# ✅ 仅使用标准库中的 urllib(功能有限)
from urllib.request import urlopen
from urllib.parse import urlencode
import json
# 简单的 GET 请求(无标头,无认证)
url = "https://api.example.com/data"
with urlopen(url) as response:
data = json.loads(response.read())
return [{"json": data}]
### 常见库替代方案
| 需求 | ❌ 外部库 | ✅ 替代方案 |
|------|-------------------|----------------|
| HTTP 请求 | `requests` | 使用 HTTP Request 节点或 JavaScript |
| 数据分析 |