美文网首页
Electron打包后运行出错

Electron打包后运行出错

作者: 路过麦田 | 来源:发表于2017-09-13 16:12 被阅读1643次

    在升级Node和Electron版本后,在某些机器上打包发布时出现了下面的异常:

    App threw an error when running { Error: Cannot find module './builder'
        at Module._resolveFilename (module.js:470:15)
        at Function.Module._resolveFilename (/usr/share/mixun/resources/electron.asar/common/reset-search-paths.js:35:12)
        at Function.Module._load (module.js:418:25)
        at Module.require (module.js:498:17)
        at require (internal/module.js:20:19)
        at Object.<anonymous> (/usr/share/mixun/resources/mixun.asar/node_modules/xml2js/lib/xml2js.js:10:13)
        at Object.<anonymous> (/usr/share/mixun/resources/mixun.asar/node_modules/xml2js/lib/xml2js.js:37:4)
        at Object.<anonymous> (/usr/share/mixun/resources/mixun.asar/node_modules/xml2js/lib/xml2js.js:39:3)
        at Module._compile (module.js:571:32)
        at Object.Module._extensions..js (module.js:580:10) code: 'MODULE_NOT_FOUND' }
    

    但是怪异的是本地编译运行是没问题的,但是一旦打包成asar运行就会出现问题,通过崩溃信息可以知道问题出在xml2js这个库,解压生成的asar文件,发现node_modules/xml2js/lib/目录下面并没有builder.js这个文件,本地编译的node_modules中明明是有的,将本地的builder.js文件拷贝到asar解压后的目录中,再次运行,发现可以正常运行了,真是很神奇。

    现在的问题就是为什么打包的时候不会把这个文件一起打包进去,查看了打包的代码,发现也并没有忽略掉builder.js这个文件,grep一下整个项目发现builder.js这个关键字基本没有,这就不是神奇,而是诡异了,把本地的node_modules/xml2js/lib/builder.js文件进行改名,比如改为xbuilder.js,然后将xml2js.js中对应的引用也改为require('./xbuilder'),然后进行打包编译,运行,发现可以正常运行。

    改名后,可以正常运行,那说明可能在某个地方将builder.js过滤掉了,但是一直也找不到相关的代码,更诡异的是我把builder.js改为xbuilder.js是可以的(甚至不带builder关键字都可以),但是改为builder2.js就不行了,也是醉了,更更诡异的是相同的代码,相同的环境,在其他的电脑上就是好的,只能呵呵了。

    目前也没有其他方案,暂时也只能这样了。

    相关文章

      网友评论

          本文标题:Electron打包后运行出错

          本文链接:https://www.haomeiwen.com/subject/wpxwjxtx.html