如何解决electron build、TypeScript和axios的常见问题
介绍了其中三方面的原因和解决方法
electron-build
download failed
相关原因
由于国内网络环境的原因,有时候下载速度会非常慢,甚至导致超时或失败
解决方法
- 使用淘宝镜像源来加速下载
- 使用全局代理
参考文档
- electron-builder - npm
- 淘宝 NPM 镜像
- Electron | Build cross-platform desktop apps with JavaScript, HTML, and CSS.
Cannot spawn app-builder.exe: Error: spawn UNKNOWN
相关原因
pnpm可能会导致一些原生模块没有被正确载入
解决方法
[任选其一]
- 开启全局节点模式[推荐]
下载速度可正常观看YouTube即可 - 下载指定版本electron-build[推荐]
移动至C:\xxx\AppData\Local\electron\Cache版本号 链接 23.2.3 23.2.3-win32-x64.zip 23.2.4 23.2.4-win32-x64.zip 24.1.2 24.1.2-win32-x64.zip 25.0.0-alpha.3 25.0.0-alpha.3-win32-x64.zip 25.0.0-alpha.4 25.0.0-alpha.4-win32-x64.zip
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory in Ionic 3
解决方法
TypeScript 错误:类型Window
上不存在属性X问题
TypeScript是一种静态类型检查的编程语言,它可以在编译时发现并报告潜在的错误。但是有时候,当我们使用一些第三方库或者自定义的全局变量时,TypeScript会提示类型“Window”上不存在属性“X”的错误,这是因为TypeScript无法识别这些属性
解决方法
- 使用类型断言来告诉TypeScript,我们知道这个属性是存在的,只需要在属性前加上
(<any>window)
即可。例如,如果我们要使用一个名为myVar
的全局变量,我们可以这样写:(<any>window).myVar
- 使用声明合并来扩展Window接口,添加我们需要的属性。只需要在一个.ts文件中写上如下代码即可:
1 | declare global { |
参考文档
axios: timeout of 5000ms exceeded超时问题如何解决
axios是一个基于Promise的HTTP客户端,它可以在浏览器和Node.js中使用。它有一个默认的超时时间为5000毫秒,也就是说如果请求在5秒内没有响应,就会抛出一个错误:”timeout of 5000ms exceeded”
解决方法
- 增加超时时间,可以在创建axios实例时设置
timeout
选项,也可以在发送请求时设置timeout
参数。例如:
1 | const axios = require('axios'); |
- 捕获并处理错误,可以使用
catch
方法或者try...catch
语句来捕获错误,并根据具体情况进行处理。例如,可以重试请求,或者提示用户检查网络连接。例如:
1 | axios.get('url') |