• Electron打包Node程序:NODE_MODULE_VERSION值不一致引发的问题。(1)


    由于项目的要求,需要用到Electron+Node。Electron确实有很多坑,刚接触的时候,遇到了各种各样的问题,不过最终都一一解决了。

    一些常见的问题,网上都有相应的资料,这里就不介绍了。

     首先看一张图,介绍Electron、Node使用不同的Chrome内核:

    由于chrome内核不同,需要编译成一致的,才能让node程序运行在Electron上,而网上推荐的最常用的编译工具为electron-rebuild,在使用Node-Serialport读取本机串口的时,使用"./node_modules/.bin/electron-rebuild.cmd"编译之后,就能解决问题。

    但是在使用node-ffi读取dll时,遇到了以下的问题,本篇文章将围绕这个问题探讨以下解决方案:

    NODE_MODULE_VERSION指的是Node.js的ABI(application binary interface)版本号,用来确定编译Node.js的C++库版本,以确定是否可以直接加载而不需重新编译。在早期版本中其作为一位十六进制来储存,而现在表示为一个整数。

     

    查看Electron版本文档库中,发现有这么一句话:Change the NODE_MODULE_VERSION to 69

    问题原因终于找到了,但是怎么解决?问题分析到这种程度,可以得出两种解决方案:

    1) 选取Node版本与Electron版本的NODE_MODULE_VERSION一致。(由于没有找到electron各个版本对应的NODE_MODULE_VERSION,这里可以稍后研究一下)

    2)依据electron-rebuild的思路,把二者转换成一致。在rebuild的时候,指定一下abi的值不就可以了?查了一下这方面的资料,发现才真能指定abi的值。

          "rebuild": "cnpm rebuild --runtime=electron --target=4.0.5 --disturl=https://atom.io/download/atom-shell --abi=69"

          运行成功。同时解决了Node-Serialport串口读取,也能解决Node-ffi读取dll。

    像需要python2.7x、vc++、.net  framework2.0等的配置就不啰嗦了,查一下资料即可,最后附带一张package.json配置以及都需要全局安装哪些库:

    新手入门,会遇到各种各样的问题,但最终总有解决的办法。

  • 相关阅读:
    「我和分布式数据库的故事」有奖征文来啦
    从落地效果看,如何基于SequoiaDB构建「集约运营」城商行内容管理平台
    MQ架构设计原理
    jpa条件表达式Expressions.booleanTemplate和JPAExpressions
    Git常用操作基础补充
    MongoDB有哪些数据脱敏技术?
    MongoDB常见问题解答:时间与时区
    【网络研讨会】MongoDB Vs 效仿者:选择MongoDB的理由
    MongoDB案例分享:如何使用oplog恢复数据
    记某核心MongoDB集群索引优化实践
  • 原文地址:https://www.cnblogs.com/mdorg/p/10417945.html
Copyright © 2020-2023  润新知