评估失败:发送媒体时的a

问题描述 投票:0回答:1

我正在尝试使用

electron
whatsapp-web.js
构建一个 Whatsapp 机器人。该机器人可以正常发送文本等普通消息,但是当我尝试传递图像时,它会抛出此错误:

Server stdout: Error: Evaluation failed: a
    at ExecutionContext._ExecutionContext_evaluate (D:\Projects\Web\Projects\Whatsapp Sender\node_modules\puppeteer-core\lib\cjs\puppeteer\common\ExecutionContext.js:229:15)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async ExecutionContext.evaluate (D:\Projects\Web\Projects\Whatsapp Sender\node_modules\puppeteer-core\lib\cjs\puppeteer\common\ExecutionContext.js:107:16)
    at async Client.sendMessage (D:\Projects\Web\Projects\Whatsapp Sender\node_modules\whatsapp-web.js\src\Client.js:938:28)
    at async D:\Projects\Web\Projects\Whatsapp Sender\server\script.js:167:17

我的代码:

var media = MessageMedia.fromFilePath(image_path);
console.log(media);
await client.sendMessage(groups[0]._serialized, media, {
    caption: message,
});

我调试了我的代码,什么也没有。我发送图像的方式是让用户选择图像并将其转换为 html 中的 base64。当他单击发送时,base64 会重新转换回本地路径(如

project/data/image.jpg
)中的图像,然后在
MessageMedia.fromFilePath
方法中使用该路径。我确保图像已保存且路径正确。 groups[0] 也返回该号码和经过身份验证的号码之间的第一个公共组,并且它工作得很好。有人可以帮助我吗?

编辑:

我发现这种方式没有传递MessageMedia对象中的data参数,所以我尝试像

new MessageMedia('image/png', image //base64, fileName)
一样手动创建它,现在它显示这个错误

Server stdout: Error: Evaluation failed: DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
    at window.WWebJS.mediaInfoToFile (pptr://__puppeteer_evaluation_script__:520:35)
    at window.WWebJS.processMediaData (pptr://__puppeteer_evaluation_script__:317:36)
    at window.WWebJS.sendMessage (pptr://__puppeteer_evaluation_script__:19:39)
    at pptr://__puppeteer_evaluation_script__:10:45
    at ExecutionContext._ExecutionContext_evaluate (D:\Projects\Web\Projects\Whatsapp Sender\node_modules\puppeteer-core\lib\cjs\puppeteer\common\ExecutionContext.js:229:15)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async ExecutionContext.evaluate (D:\Projects\Web\Projects\Whatsapp Sender\node_modules\puppeteer-core\lib\cjs\puppeteer\common\ExecutionContext.js:107:16)
    at async Client.sendMessage (D:\Projects\Web\Projects\Whatsapp Sender\node_modules\whatsapp-web.js\src\Client.js:938:28)
    at async D:\Projects\Web\Projects\Whatsapp Sender\server\script.js:167:17
javascript electron whatsapp
1个回答
0
投票

解决方案是使用

MessageMedia
本身而不是
.fromFilePath()
,我仍然不知道为什么使用
.fromFilePath()
时数据不包含任何内容,但我尝试使用

var media = new MessageMedia(
    `image/${fileExtension}`,
    encoded_image, // => base64
    fileName
);

现在效果很好。所以主要原因是我试图发送一张空图像

© www.soinside.com 2019 - 2024. All rights reserved.