electron 中 http 和node不一样,总是获取不完整
这个是node中的代码
`
const https = require("https");
const url = "https://www.baidu.com/";
var req = https.request(url, function (response) {
var chunks = [];
response.on("data", function (chunk) {
console.log("===================================");
chunks.push(chunk);
});
response.on("end", function () {
var buffer = Buffer.concat(chunks);
console.log(buffer.toString());
});
});
req.on("error", function (e) {
console.log(e.message);
});
req.end();
`
这个可以获取完整的html, 但是吧这个代码贴进 electron
就中不行了, 获取的html不完整并且还乱码。
请问是怎么回事?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
写完才发现是个挖坟贴....
这种情况你应该拿出一个能复现你的问题的“最简”代码放在github或什么地方能让人查看,否则鬼知道你遇到的是什么问题?
直觉上我并不觉得electron这种迭代很久的产品会有这样明显的功能性问题,今天无事索性用个demo验证一下
main.js
package.json
index.html
app.js
第一次输出没有任何问题
考虑到用脚手架开发都会动态刷新,可能是刷新的问题? 我F5了之后确实有问题,现在输出只有:
看起来是事件没有触发,用关键词
electron node async io not working on reload
搜索,第一条就是:https://github.com/electron/electron/issues/22119,看https://github.com/electron/electron/issues/18397里面的时间线一时半会还没法确定。不过简单的把主进程添加
`app.allowRendererProcessReuse = false
可以解决上面的问题,只不过楼主遇到的问题是不是这个就不知道了。我也遇到这个问题,是因为在electron里end事件有时触发有时候不触发,我的办法是把end里面的方法写到data事件里的setTimeout,每执行一次data就重置一次setTimeout,当data超过一段时间不执行后,就说明请求完成了,就会执行setTimeout里面的方法。
总之就是你自己写个定时器去检查请求是否已经结束