electron-vue报错ERROR in unknown: Unexpected token 问题解决思路
- 前言
-
- 报错内容
- 解决思路
-
-
- 解决方案
-
- 后记
前言
最近过年没事在家里完善我自己的开发者助手,是使用electron-vue写的,由于我构想需要软件能自动软升级,所以这几天在家里折腾electron-updater这个插件,最开始我是使用的electron-packager打包方法,所以一直无法使用,最后查阅各种资料根据很多人描述的内容分析软更新应该是需要electron-builder打包方式才能实现。各种折腾各种更换外部组件后开发环境能正常跑起来了,但是打包的时候却踩了一个莫名其妙的问题,那就是ERROR in unknown: Unexpected token (1979:65),是的你没有看错他并没有报出实际的错误位置和细节,这让我很是蛋疼,从昨天中午一直折腾到凌晨两点多都没有得到很好的解决。最后无奈使用网上原有的能打包的demo一个文件一个文件和我本地对比才发现原来问题就出在这个electron-updater插件上。
报错内容
- building main process- building renderer processERROR failed to build main processHash: c6e912ee62b75ed1f1c3Version: webpack 4.46.0Time: 9066msBuilt at: 2021/02/17 上午11:29:52Asset Size Chunks Chunk Namesmain.js 357 KiB 0 mainEntrypoint main = main.js[0] external "electron" 42 bytes {
0} [built][1] external "path" 42 bytes {
0} [built][2] ./node_modules/electron-updater/node_modules/builder-util-runtime/out/index.js 4.46 KiB {
0} [built][4] ./node_modules/electron-updater/out/main.js 4.87 KiB {
0} [built][11] external "fs" 42 bytes {
0} [built][12] ./node_modules/electron-updater/out/providers/Provider.js 4.82 KiB {
0} [built][13] external "url" 42 bytes {
0} [built][14] ./node_modules/electron-updater/node_modules/fs-extra/lib/index.js 719 bytes {
0} [built][23] external "crypto" 42 bytes {
0} [built][34] ./node_modules/electron-updater/out/AppUpdater.js 23 KiB {
0} [built][67] ./node_modules/electron-updater/out/AppImageUpdater.js 5.55 KiB {
0} [built][73] ./node_modules/electron-updater/out/MacUpdater.js 5.35 KiB {
0} [built][74] ./node_modules/electron-updater/out/NsisUpdater.js 10.7 KiB {
0} [built][75] external "nedb" 42 bytes {
0} [built][176] ./src/main/index.js + 1 modules 8.88 KiB {
0} [built]| ./src/main/index.js 6.94 KiB [built]| ./src/main/Update.js 1.92 KiB [built]+ 162 hidden modulesERROR in unknown: Unexpected token (1979:65)error Command failed with exit code 1.
解决思路
通过我的各种测试各种分析发现其实报错ERROR in unknown: Unexpected token 的上一句代码嫌疑很大 162 hidden modules 这不是说我引入的模块被隐藏了嘛?这是为毛??试了各种方法,也查阅了网上的资料都说去掉 ·–hide-modules· 参数但是我的项目中并没有这个参数。也有人说命令参数加入 --color --display --display-modules 例如 webpack --color --display --display-modules 实测也无效。最后想了很久也检查了很久代码被我看出了破绽。
解决方案
想了很久最后查看package.json文件发现我安装electron-updater模块的时候是安装到了devDependencies中,emm打包的时候应该是使用的生产环境也就是dependencies中的包也就是build的时候可能找不到electron-updater模块,提示 hidden modules也就不是很奇怪的问题了(个人感觉这里应该直接给个异常或者警告比较好),那是不是我应该将electron-updater模块安装到dependencies就可以了呢?光有想法是不能解决问题的,说干就干最后发现还真是这个问题导致的。
//在package.json的dependencies中添加electron-updater模块,并且删除devDependencies的electron-updater模块"electron-updater": "^4.3.5"//然后再npm install后执行 npm run build 看看问题是否得到解决
后记
以上解决方案只针对我个人的项目有用,如果你也遇到同样问题并且对你有帮助的话可以给我点个小小的赞,谢谢哈。