当前位置: 首页 > news >正文

泗洪企业网站建设个人博客网站域名注册

泗洪企业网站建设,个人博客网站域名注册,美发店会员卡管理系统,做网站组服务器electronvue3写了一个小项目,实现了一个文件下载功能 存在的问题 打包后,应用下载文件崩溃代码 // 渲染进程window.electron.ipcRenderer.invoke(save-file, {path: r.filePath,fileurl: previewUrl,}).then(response > {console.log(response ----…

electron+vue3写了一个小项目,实现了一个文件下载功能

存在的问题

	打包后,应用下载文件崩溃

代码

// 渲染进程window.electron.ipcRenderer.invoke('save-file', {'path': r.filePath,'fileurl': previewUrl,}).then(response => {console.log('response --------------');console.log(response);})// 主进程
ipcMain.handle('save-file', (event, args) => {// process.crash()try {// 下载保存文件console.log('axios args.fileurl ------------');console.log(args.fileurl);return downloadFile(args.fileurl, args.path)} catch (error) {console.log('error ---------------------------')console.log(error)return 'save-file 出错了: \n' + error.toString()}
});// 工具文件
import axios from 'axios'
import fs from 'fs/promises'export function downloadFile(downloadUrl, downloadPath) {try {return axios.get(downloadUrl, {method: 'GET',headers: {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36","Referer": downloadUrl,},responseType: 'arraybuffer'}).then(res => {console.log('下载成功')return fs.writeFile(downloadPath, res.data, "binary").then(r => {console.log('保存成功')return fs.stat(downloadPath)});}).catch(e => {console.log('e ------------------')console.log(e)return e});} catch (error) {console.log('error ---------------------------')console.log(error)return 'downloadFile 出错了: \n' + error.toString()}
}

解决思路

首先,要复现,我测试了自己的笔记本电脑,双系统都没问题,没办法复现这个bug,但是测试那边两台电脑都能复现,测试是在外地!我只好又找了一台闲置电脑,还好复现出来了,否则只能回家试试自己的电脑了

第二,找到问题所在,打包后 console.log 就看不到了,我想办法记录日志,看了官方的crashReporter,还有不少人推荐,我正好全栈,就搞了个接口接收日志,但是没有任何报错。后来试了electron-log,记录在用户本地,真香,简单好用,以后有需要直接搞个接口上传log文件就好了!还是没报错!但是我锁定了有问题的那一行代码,就是 axios.get(downloadUrl, { 这里崩溃的!

第三,想办法换掉axios!试了第三方electron下载库,electron-download、electron-dl、都很难用,文档少,搜索结果更少,自己摸索半天也没跑起来,继续换electron-download-manage,但是这个东西调用很麻烦!换request下载,和axios比较像,还是不行!我觉得我的方向可能错了,灵机一动,把axios下载放在渲染进程里面,下载好的数据传递给主进程!好了!

代码

// 渲染进程axios.get(previewUrl, {method: 'GET',responseType: 'arraybuffer'}).then(res => {console.log('下载成功')console.log('下载成功')console.log('下载成功')console.log(typeof res.data)window.electron.ipcRenderer.invoke('save-file', {'data': res.data,'path': r.filePath,}).then(response => {console.log('response --------------');console.log(response);})// 主进程ipcMain.handle('save-file', (event, args) => {try {log.info('event, args ------------');log.info(event, args);// 保存文件return saveFile(args.data, args.path)} catch (error) {log.info('error ---------------------------')log.info(error)return 'save-file 出错了: \n' + error.toString()}
});// 工具js
import fs from 'fs/promises'
import log from 'electron-log'
import { Buffer } from 'buffer'export function saveFile(data, downloadPath) {log.info('saveFile ----------------------- 0')try {log.info('saveFile ----------------------- 1')return fs.writeFile(downloadPath, Buffer.from(data), "binary").then(r => {log.info('保存成功')return fs.stat(downloadPath)});} catch (error) {log.info('saveFile ----------------------- 3')log.info('error ---------------------------')log.info(error)throw new Error('saveFile出错了:' + error.toString()) // 将错误包装成新的Error对象并抛出,让调用者知道发生了错误}
}

中间还发生了一个小插曲

Error occurred in handler for 'save-file': 
TypeError [ERR_INVALID_ARG_TYPE]: 
The "data" argument must be of type string or an instance of 
Buffer, TypedArray, or DataView. Received an instance of ArrayBuffer

所以才有了Buffer.from(data)
感谢文心一言,感谢我自己!

http://www.yayakq.cn/news/850665/

相关文章:

  • 免费建站系统官网做的网站很卡是什么原因
  • 手机网站 win8风格wordpress登入地址
  • 企业网站建设方案书 备案旅游网站建设与规划
  • 网站统计有哪些广州有网站建设学校
  • 深圳建网站哪上传到网站的根目录中
  • 广州建站商城优秀网络广告文案案例
  • 如何用dreamer做网站wordpress多语言网站
  • 网站网页优化中国 庆阳
  • 芜湖经济开发区网站重庆旅游必去景点
  • 深圳高端网站建设免费申请域名空间
  • 郑州网站外包公司富阳网站建设 优帮云
  • 礼仪策划网站建设京东网上商城手机
  • 淘宝关键词排名查询网站成都网站建设推荐
  • 无锡网站建设 首选众诺做英文小说网站
  • 布吉做网站市场营销实务
  • 免费建设互动的网站django做网站怎样
  • ftp网站怎么建立网页设计课程培训机构
  • 帮做暑假作业网站怀化市住房建设局网站
  • 建设自己的淘宝优惠券网站宁波优化网站排名价格表
  • 做招商加盟的网站网站截图环境 php
  • 百度站长工具后台东莞做汽车有没有买票的网站
  • 网站建设的成本有哪些方面网站开发运营成本
  • 惠州 家具 网站上线怎样开网站
  • 洛阳航迪科技网站建设公司怎么样图片转链接在线转换
  • 清丰网站建设费用wordpress 上一页 下一页
  • wordpress滑验证青岛seo网站建设公司
  • 郑州达云通网站建设公司网站服务器 502
  • 深圳团购网站设计用齐博cms建网站
  • 都江堰建设局官方网站wd wordpress
  • 租机网站开发邢台建网站公司