记录一次Node.js版本升级造成的程序运行错误
几个月之前完成的一个electron项目,今天项目重新打包给测试人员之后发现运行报错,报错信息如下:
按照以往的经验,看到报错信息中的Cannot find module fs/promises
,首先使用npm命令重新安装fs/promises
npm install fs/promises
npm install之后发现问题没有解决,根据错误信息找到报错位置:node_modules下的electron_updater的AppUpdater.js文件,将require(“fs/promises”)改为require(“fs”).promises。
再次运行项目,发现Cannot find module fs/promises
错误已经解决,但是又出现了其他问题,再加上这种方法修改了node_modules文件,所以我干脆删除了node_modules文件包和package-lock.json文件,打算重新下载依赖包。
使用npm install
重新下载项目依赖,依赖下载完成后,运行项目出现下面这个问题:
上图所示的报错,以前项目开发的时候曾经遇到过几次,一般我在控制台执行.\node_modules\.bin\electron-rebuild.cmd
重新编译就可以解决,但是这次执行重新编译后出现下面的错误:
根据错误信息还有网上的各种解决方法,我尝试了各种方案,无论怎么执行到这一步结果都是rebuild failed
。
此时已经有点迷了,但是网上找了N多方案之后,逐渐定位到node.js的版本问题上,仔细读这里的错误提示,我发现并不是我的node版本过低,而是我的nodeJS版本过高
了。
下面是我此时本地的node和npm版本,确实有点高了:
根据NODE_MODULES_VERSION
,在官网上查找NODE_MODULES_VERSION 76
对应的nodeJS版本(传送门)下载后安装到本地电脑。
有些NODE_MODULES_VERSION在官网可能会找不到对应的node.js版本,我这次就没找到,暂时还不知道为啥。但是已经能确定是node版本过高造成的报错,从同事那里找来了能正常运行的node版本号,在官网上找到对应版本的node.js压缩包,解压并覆盖到本地nodejs路径下
。(也可以卸载原来的node重新安装,但是我的node安装之后重新配置过依赖包的存储位置,这样直接覆盖就不用再次配置了)。
此时,再运行electron项目,已经可以正常运行。