将Pipedream Workflow集成到Node.js时遇JSON解析错误求助
解决Pipedream集成Node.js时的JSON解析错误
问题根源
你遇到的错误是因为Pipedream返回的是HTML内容(而非预期的JSON),导致Node.js尝试解析非JSON数据时抛出语法错误。
解决步骤
1. 修正Pipedream Workflow的输出格式
打开你的Pipedream Workflow,确保最后一步用$respond()明确返回JSON格式数据,而不是默认的HTML响应。示例代码:
// Pipedream步骤中返回JSON的正确写法 $respond({ status: 200, headers: { "Content-Type": "application/json" }, body: { listData: 你从Microsoft Graph获取到的数据 } });
如果之前只是直接返回数据或用console.log(),Pipedream会默认生成包含执行结果的HTML页面,这就是你拿到<p><b>Succ"...的原因。
2. 验证Pipedream Endpoint的返回内容
复制Pipedream Workflow的触发URL,直接在浏览器或调试工具中访问,确认返回的是纯JSON字符串。如果返回HTML,说明第一步的输出设置未生效,需要重新调整。
3. 优化Node.js的请求处理逻辑
在Node.js代码中,先检查响应的Content-Type头,确认是JSON后再解析,避免直接触发错误。示例代码(以node-fetch为例):
const fetch = require('node-fetch'); async function fetchListData() { const pipedreamUrl = '你的Pipedream Workflow触发URL'; const response = await fetch(pipedreamUrl); // 先校验响应类型 const contentType = response.headers.get('Content-Type'); if (!contentType || !contentType.includes('application/json')) { const htmlContent = await response.text(); console.error('错误:返回内容不是JSON,而是HTML:', htmlContent); return; } // 解析JSON数据 const data = await response.json(); console.log('成功获取数据:', data); } fetchListData();
4. 排查Pipedream Workflow的执行日志
如果以上步骤都没问题,去Pipedream的Workflow日志页面,检查每一步的执行状态,确认从Microsoft Graph拉取数据的步骤是否成功,数据是否正确传递到输出步骤。
内容的提问来源于stack exchange,提问作者Silvan Leemann
相关产品推荐
相关产品推荐

