之前用electron做了一个客户端,技术栈包括electron、react、node-sass,一段时间没动就启动报错,重新拉取依赖遇到很多坑, 一开始是yarn下载到报404,主要是electron、node-sass的依赖包总是由于各种原因不成功,换了N次镜像源,N次执行yarn命令,终于成功了,解决方法是在项目目录新建.npmrc,然后配置国内有!效!镜像源,百度到一些镜像源压根就不存在对应版本的依赖,所以一定要提前确定镜像源是有对应版本包的,最终.npmrc文件内容如下
phantomjs_cdnurl=http://cnpmjs.org/downloads
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
registry=https://registry.npm.taobao.org
ELECTRON_BUILDER_BINARIES_MIRROR=https://mirrors.huaweicloud.com/electron-builder-binaries/
electron_mirror = https://mirrors.huaweicloud.com/electron
node-sqlite3_binary_host_mirror=https://npm.taobao.org/mirrors/
在折腾的途中,针对各种具体的报错用不同的姿势尝试解决问题,例如
- node-sass安装失败,提示如下:
Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (93)
For more information on which environments are supported please see:
https://github.com/sass/node-sass/releases/tag/v4.12.0
看描述是64位Win10系统不支持Node-Sass,Node-Sass版本为4.12.0,这个描述很有误导性,实际上是Node版本和Node-Sass版本不兼容,解决方法是升级Node-Sass版本到和当前Node对应,对应关系参考www.npmjs.com/package/nod…
| NodeJS | Supported node-sass version | Node Module |
|---|---|---|
| Node 20 | 9.0+ | 115 |
| Node 19 | 8.0+ | 111 |
| Node 18 | 8.0+ | 108 |
| Node 17 | 7.0+, <8.0 | 102 |
| Node 16 | 6.0+ | 93 |
| Node 15 | 5.0+, <7.0 | 88 |
| Node 14 | 4.14+, <9.0 | 83 |
| Node 13 | 4.13+, <5.0 | 79 |
| Node 12 | 4.12+, <8.0 | 72 |
| Node 11 | 4.10+, <5.0 | 67 |
| Node 10 | 4.9+, <6.0 | 64 |
| Node 8 | 4.5.3+, <5.0 | 57 |
| Node <8 | <5.0 | <57 |
Node版本之前升级到V16.17.0, 所以先将node-sass和sass-loader版本升级,包管理用yarn,操作是先删除yarn.lock,重新安装node-sass
yarn add node-sass@6.0.1
- sqlit3安装报错,提示如下:
Error: Cannot find module 'F:\React\react-demo\node_modules\_sqlite3@4.2.0@sqlite3\lib\binding\electron-v6.0-win32-x64\node_sqlite3.node'
在node_modules_sqlite3@4.2.0@sqlite3\lib\binding 文件夹下新建c文件夹,然后下载对应的node_sqlite3放到该目录,下载地址: mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.…
- 由于项目在公司内部使用,无法联网下载electron,所以将electron运行和编译需要的依赖下载到本地,然后启动本地服务,修改.npmrc的electron_mirror和ELECTRON_BUILDER_BINARIES_MIRROR路径值,改成本地下载zip的http路径