错误提示信息如下:
App threw an error during load
Error: Cannot find module 'fs/promises'
at webpackMissingModule (/home/syx/code/desktop/dist/main.js:14205:84)
at Object../node_modules/_electron-updater@4.6.5@electron-updater/out/AppUpdater.js (/home/syx/code/desktop/dist/main.js:14205:170)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../node_modules/_electron-updater@4.6.5@electron-updater/out/main.js (/home/syx/code/desktop/dist/main.js:16516:20)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../src/splashscreen.ts (/home/syx/code/desktop/dist/main.js:71674:19)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../src/winsmanager.ts (/home/syx/code/desktop/dist/main.js:71957:22)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../src/main.ts (/home/syx/code/desktop/dist/main.js:70800:21)
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'fs/promises'
at webpackMissingModule (/home/syx/code/desktop/dist/main.js:14205:84)
at Object../node_modules/_electron-updater@4.6.5@electron-updater/out/AppUpdater.js (/home/syx/code/desktop/dist/main.js:14205:170)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../node_modules/_electron-updater@4.6.5@electron-updater/out/main.js (/home/syx/code/desktop/dist/main.js:16516:20)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../src/splashscreen.ts (/home/syx/code/desktop/dist/main.js:71674:19)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../src/winsmanager.ts (/home/syx/code/desktop/dist/main.js:71957:22)
at __webpack_require__ (/home/syx/code/desktop/dist/main.js:20:30)
at Object../src/main.ts (/home/syx/code/desktop/dist/main.js:70800:21)
Gtk-Message: 15:02:25.098: Failed to load module "canberra-gtk-module"
网上说的最多的解决办法一是说因为node的版本太低导致的,查看electron-builder的代码可以发现,里面都是require("fs/promises")这样的引用,但旧版node是require("fs").promises的引用方式。但试了很多node版本之后并没有解决问题。
二是替换node_modules文件夹中electron-builder文件夹下require("fs/promises")为require("fs").promises;没试过这样办法。
根据上述错误提示,找到node_modules下的electron_updater的AppUpdater.js文件,将require("fs/promises")改为require("fs").promises发现能运行。因为大概半年之前工程还是能运行的,后来就想到锁定版本试试,就把package.json中的"electron-updater":"^4.3.5"改为"electron-updater":"4.3.5",然后就能运行了。