electron项目构建打包缺少dll文件的问题解决办法

      最近,在做electron项目中,使用了第三方dll,开发环境运行一切正常,可是当我们打包,最后生成的可执行程序再执行,发现调用dll总是不成功,猜测是少了dll。

      后来发现果真是路径问题,我们开发环境,可以通过path.resolve()或着path.join()来指定任意目录下的dll,但是问题来了,到了构建生产环境的时候,我们想象的目录并没有按照开发环境的目录来进行打包了。

      很明显的一条就是,我们在根目录下的package.json等文件就没有build到项目的根目录下。构建的时候,只是把相关的html,css,js等文件进行了合并压缩。而dll并不在这些文件之列,自然就不会打包到项目中了。

      既然问题明确了,那就需要解决这个打包除html,css,js等文件之外的文件问题了。

      好在package.json配置build节点下有这么一个配置项:extraResources:[{from:'',to:''}],我们只需要将我们需要打包的文件加入到这个配置中即可。

     比如,我把dll文件放在了static目录下,这样呢,最后build的时候,不会生成这个目录,但是会有一个resources目录,而这个目录似乎就是根目录的一个软链接。代码中,可以这样写:

var dllpath = path.resolve(__dirname,"../../../static/visadll.dll");
if(process.env.NODE_ENV == 'production'){
  dllpath = path.resolve(__dirname,"../../../visadll.dll");
}

    项目结构如下所示: 

    |-static/
    |-src/renderer/components/ 

    我的vue文件代码所在位置的上三级目录与static的位置是同一级。

    这样,package.json的配置项build下的extraResouces配置如下:

    

    这些需要的文件会打包到根目录下的resources目录下。这个目录很奇怪的地方在于,它虽然是根目录下的resources,但是它在path.resolve()解析到根目录即可,他会自动包含resources目录。

    如下图所示,我们经过新的配置并构建,构建完成,打包后项目根目录下的resources目录就会包含我们的dll文件了。

    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值