在nodejs Rest api调用中,puppeteer页面计算不返回响应并抛出错误


  1. 在nodejs Rest api调用中,puppeteer页面计算未返回响应并抛出错误。
  2. 如何在执行所有步骤后返回对象,没有异步
app.get("/api/register", function (req, res) {

res =  page.evaluate((res) => {


webex.meetings
.register()
.then(() => {
console.log("Authentication#register() :: successfully registered");
return res.status(200).json({ message: "Successfully Registered" });
})
.catch((error) => {
console.error( "Authentication#register() :: error registering", error);
return   res.status(400).json({ message: "Successfully Registered" });
})


}, res);
});

错误git用户: sansubbu webRTC node_modules puppeteer-core lib cj 操纵 Connection.js: 115const stringifiedMessage = JSON.stringify(Object。Assign ({}, message, {id}));^

TypeError:将循环结构转换为JSON——比;从具有构造函数'Socket'的对象开始|属性'parser' ->具有构造函数'HTTPParser'的对象——property 'socket'关闭循环不允许递归对象。在JSON。stringify ()在连接。_rawSend (C: sansubbu git用户 webRTC node_modules puppeteer-core lib cj 操纵 Connection.js: 115:41)在CDPSessionImpl。git用户发送(C: sansubbu webRTC node_modules puppeteer-core lib cj 操纵 Connection.js: 320:82)在ExecutionContext。_ExecutionContext_evaluate (C: sansubbu git用户 webRTC node_modules puppeteer-core lib cj 操纵 ExecutionContext.js: 211:46)

res是一个复杂的圆形结构,仅在Node环境中工作。即使可以,通过page.evaluate()将其传递到浏览器控制台也会将其从所属的Node中取出,将其留在一个没有任何意义的环境中(浏览器不能像服务器一样响应请求)。

相反,尝试返回一个布尔值并在节点端分支,其中req/res处于其自然环境中:

app.get("/api/register", async (req, res) => {
const success = await page.evaluate(async () => {
try {
await webex.meetings.register();
return true;
}
catch (err) {
return false;
}
});
if (success) {
console.log("Authentication#register() :: successfully registered");
return res.status(200).json({message: "Successfully Registered"});
}
console.error("Authentication#register() :: error registering", error);
// probably not the message you want but left as-is...
return res.status(400).json({message: "Successfully Registered"});
});

这是未经测试的,因为你没有提供一个完整的,可重复的例子。

page.exposeFunction是基于浏览器中的条件触发Node代码的另一个可能的工具,但在这里似乎有点小题大做。

最后,我不确定page是什么,但通常您需要为每个请求提供不同的页面。请参阅这个答案,以获得建议的Express + Puppeteer样板。

最新更新