zoukankan      html  css  js  c++  java
  • 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配置以及都需要全局安装哪些库:

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

  • 相关阅读:
    Spring4 MVC json问题(406 Not Acceptable)
    java 从网络Url中下载文件
    Java基础知识(一) 自增、自减运算符
    java文件读写操作
    java集合运算:求交集,并集,集合差
    httpclient+jsoup实现网页信息抓取
    java web使用gradle配置详情
    关于mysql登录异常处理方法
    windows server 2012 r2 远程桌面连接指南
    Java生成带小图标的二维码-google zxing 工具类
  • 原文地址:https://www.cnblogs.com/mdorg/p/10417945.html
Copyright © 2011-2022 走看看