集成
Duaer 里 Code 的常见问题
Duaer 里 Code 节点的常见问题:返回格式、import、模块、网络、凭证和 Python。
返回的数据格式不对
Duaer 节点之间传的是对象数组,每个对象的 json 键指向另一个对象。Code 节点必须按这个格式返回:
return [
{ json: { name: 'Ada', score: 92 } },
{ json: { name: 'Lin', score: 88 } },
];json 指向数组、什么都不返回、或返回 undefined,都会报错。返回 undefined 时,检查引用的字段在每次运行里是否都存在。
'import' and 'export' may only appear at the top level
Code 节点的 JavaScript 沙箱不支持 import 和 export。改用 require:const lodash = require('lodash');
Cannot find module '<模块>'
自托管 Duaer 才能在 Code 节点里加载额外模块:
- 把模块装进 Duaer 所在的环境;用 Docker 时,基于你的 Duaer 镜像做一个装好模块的自定义镜像。
- 设置 NODE_FUNCTION_ALLOW_BUILTIN(内置模块)和 NODE_FUNCTION_ALLOW_EXTERNAL(外部模块),列出允许的模块名,然后重启。
fetch 或 axios 在 Code 节点里失败
Duaer 的 Code 节点在沙箱里运行,没有网络访问,fetch、axios 和 http 模块都会失败。用 HTTP Request 节点发请求,再在 Code 节点里处理它的输出。
Code 节点读不到凭证
这是有意的设计:Code 节点不能读取 Duaer 的凭证,以免密钥外泄。需要认证的请求交给 HTTP Request。要按条件换凭证:
- 用 Switch 分流到使用不同凭证的节点。
- HTTP Request 用 Custom Auth,用表达式设置头、查询参数或请求体。
在多次运行之间保存数据
用 $getWorkflowStaticData('global') 或 $getWorkflowStaticData('node') 保存少量数据,例如上一次报告的日期。只想避免重复处理同一批数据时,用 Remove Duplicates 节点更简单。
Python 报错
- Python 选项默认不能 import 任何模块,除非实例管理员放开了。
- Python 不支持 _ 开头的辅助变量,只有全部条目模式下的 _items 和逐条模式下的 _item。
- 实例禁用 Python 时会直接报错;自托管的管理员把 DUAER_PYTHON_ENABLED 设为 true 或删掉它再重启即可。
详见 Python。
常见问题
Duaer 的 Code 节点能发 HTTP 请求吗?
不能。Duaer 的 Code 节点沙箱没有网络访问。用 HTTP Request 节点发请求,再用 Code 处理结果。
Duaer 的 Code 节点能用凭证吗?
不能。Duaer 不让 Code 节点读取凭证。需要认证的调用交给 HTTP Request。
同组
Duaer 的内置集成
Duaer 的内置触发器、操作和凭证。触发器启动数字组织,操作在启动之后执行某一步。
集成Duaer 社区节点的风险
在 Duaer 里安装社区节点前,要清楚代码来自实例管理员信任的来源,并了解权限范围。
集成Duaer 社区节点排障
Duaer 社区节点装不上或跑失败时,先核对版本、权限和节点文档,再查实例日志。
集成在 Duaer 里对应用做自定义 API 调用
当 Duaer 某个应用节点没有你要的接口时,用 HTTP Request,并复用该应用已保存的认证。
集成Duaer 里的集成入口
Duaer 内置触发器、动作与凭证。社区节点是额外包。自定义操作用 HTTP Request 复用已保存的认证。
凭证Duaer 内置凭证目录
按服务列出 Duaer 内置凭证说明。创建流程见凭证总览;节点文档会链到对应服务页。
创建节点为 Duaer 创建自定义节点
内置节点和自定义操作都不够用、而且这一步要反复用时,再为 Duaer 写一个节点包。