【发布时间】:2020-02-02 17:13:21
【问题描述】:
我正在使用 electron 和 reactjs 开发一个项目。因此,我使用 electron-fetch 从 API 获取数据,使用 JSON 发送和返回 JSON 响应。
在网络控制台中,我可以看到我得到了预期的结果(我还使用了测试客户端(Insomnia)并确认我得到了如下 JSON 响应:
{
"result": 0,
"message": null,
"data": [
{
"MonitorId": 2,
"LogName": "Test",
"LogPath": "/root/test"
}
]
}
但是,在电子应用程序中,在网络选项卡响应中,我可以看到上面的 JSON 对象,但控制台中显示以下错误
SyntaxError: JSON 中位置 1 的意外标记 o 在 JSON.parse() 在 index.es.js:234
当我打印出 response.body 时,我看到的是 [object object] 而不是实际的 JSON。
下面是我的获取请求
try
{
fetch(url, {
method: 'post',
headers: {
'Content-Type': 'application/json',
'authorisation_token': authorisation
},
mode: 'cors',
body: JSON.stringify(postArray)
}).then(function (response) {
if (response.status !== 200)
{
console.log("Something went wrong. Status Code: " + response.status);
reject(response);
return;
}
console.log(response);
response.json().then(function (data) {
resolve(data);
}).catch(function (err) {
console.error("Caught Error: " + err);
reject(err);
});
});
}
catch (err)
{
console.error(err);
}
我最近以同样的方式使用了普通的 fetch 并且没有遇到问题,所以不确定这是否是电子获取特有的东西,或者我是否在这里遗漏了一些东西。
【问题讨论】:
-
为什么会有
resolve()和reject()电话?fetch()返回一个Promise,因此不需要额外的Promise, -
@Andreas 我在我自己的辅助方法中调用 fetch,它返回一个承诺,所以当我的方法完成时,它被调用的地方可以得到承诺回调
-
嗯,乍一看我也没有看到错误 - 内置电子
netAPI 是否正确返回 json?如果是,是否值得仔细看看图书馆? -
不确定我从未使用过。才刚刚开始使用电子/反应。快速浏览一下,我想我需要从 start.js (创建 BrowserWindow 的地方)运行它?
-
你需要在主进程的某个地方运行它(我猜你想在主进程中使用它——或者你会使用浏览器窗口 fetch() )。即使不创建 BrowserWindow(仅使用电子而不是节点来运行脚本),您也应该能够运行此 api。对我来说,将电子视为扩展的 node.js 运行时很有帮助。
标签: javascript json electron fetch