为电子安装模块时节点模块版本冲突 [英] node module version conflict when installing modules for electron

查看:15
本文介绍了为电子安装模块时节点模块版本冲突的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个 Electron 应用程序(https://electron.atom.io/)从我的串口读取数据.我是网络技术的新手,我知道一些 javascript,但我是一个 C++ 人.

I'm trying to make an Electron application (https://electron.atom.io/) that reads data from my serial port. I'm new to web technologies in general, I know some javascript, but I'm a c++ guy.

所以我从 github 中提取了他们的快速入门,运行

So I pulled in their quick-start from github, ran

npm install && npm start

通过这个简单的工作,我尝试安装和运行串行端口

With this easily working I tried to install and run serialport with

npm install serialport

使用测试文件安装并运行良好后,我尝试将两者结合起来并将 require('serialport') 放在 index.html 文件中.有了这个,我得到了这个错误:

With that installed and running fine with a test file, I tried to combine the two and put require('serialport') in the index.html file. With this in there I get this error:

Uncaught Error: The module '/home/user/Documents/Programing/Git/Arduino-mpu6050/electron-quick-start/node_modules/serialport/build/Release/serialport.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 53. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or`npm install`).
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at bindings (/home/user/Documents/Programing/Git/Arduino-mpu6050/electron-quick-start/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/home/user/Documents/Programing/Git/Arduino-mpu6050/electron-quick-start/node_modules/serialport/lib/bindings.js:3:35)

任何想法如何解决它?我没有使用两个不同版本的 Node,为什么会出现此错误.

Any ideas how to fix it? I'm not using two different versions of Node, why am I getting this error.

系统操作系统信息:

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:    16.04
Codename:   xenial

推荐答案

当发生这种版本不匹配时,你可以选择与目标 Node 版本的电子发行版,或者重新构建 npm 包.由于 Electron 的发行版跳过了配置了 NODE_MODULE_VERSION 51 的 Node v7.0.0(并跳转到了 v7.4.0),因此您必须重新构建 serialport 包.

When this type of version mismatch occurs, you can either choose an electron distribution with the target Node version or rebuild the npm package. Since Electron's distribution has skipped Node v7.0.0 which is configured with NODE_MODULE_VERSION 51 (and jumped to v7.4.0), you would have to rebuild the serialport package.

在您的应用程序目录(package.json 所在的位置)中,

In your app's directory (where package.json is located at),

1.安装 electron-rebuild

npm install --save-dev electron-rebuild


2.重建

./node_modules/.bin/electron-rebuild



或者,更好的选择 - 从一开始就设置环境变量.



Or, even a better option - set environment variables from the first place.

# Electron's version.
export npm_config_target=1.6.1
# The architecture of Electron, can be ia32 or x64.
export npm_config_arch=x64
export npm_config_target_arch=x64
# Download headers for Electron.
export npm_config_disturl=https://atom.io/download/electron
# Tell node-pre-gyp that we are building for Electron.
export npm_config_runtime=electron
# Tell node-pre-gyp to build module from source code.
export npm_config_build_from_source=true
# Install all dependencies, and store cache to ~/.electron-gyp.
HOME=~/.electron-gyp npm install

查看 Electron 的文档页面,了解如何使用原生 Node 模块.https://electron.atom.io/docs/tutorial/using-本机节点模块/

Take a look at the Electron's documentation page for using native Node modules. https://electron.atom.io/docs/tutorial/using-native-node-modules/

这篇关于为电子安装模块时节点模块版本冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆