node.js - 将本机节点模块 midi / easymidi 与电子一起使用
问题描述
我正在尝试使用依赖于电子应用程序中的midi模块的 nodemodule easymidi 。
当我运行npm start
时发生错误:
错误:模块 '/var/www/html/mdi/node_modules/midi/build/Release/midi.node' 是使用 NODE_MODULE_VERSION 46 针对不同的 Node.js 版本编译的。此版本的 Node.js 需要 NODE_MODULE_VERSION 73。请尝试重新编译或重新安装模块(例如,使用
npm rebuild
ornpm install
)
我确实尝试按照nodejs文档electron-rebuild
中的描述使用,但错误仍然存在。
有谁知道该怎么做?
解决方案
更新(2019 年 12 月)
根据 electron- builder的警告,似乎使用最新版本的电子构建器(版本 21.2.0),您可以删除电子重建依赖并简单地添加一个“安装后脚本” :
如果您使用电子生成器(...),则不需要电子重建
为确保您的本地依赖项始终匹配电子版本,只需将脚本添加
"postinstall": "electron-builder install-app-deps"
到您的 package.json。
原始答案
出现问题是因为electron使用自己的Node.js实例,以及另一个版本。
您可以通过以下命令查看electron使用的 Node ABI 版本:
./node_modules/.bin/electron -a
您可以与当前版本的Node.js进行比较。
我使用electron-rebuild解决了完全相同的错误:
npm install --save-dev electron-rebuild
./node_modules/.bin/electron-rebuild midi
您可以使用此命令添加“安装后”脚本package.json
来自动化该过程。
推荐阅读
- javascript - 使用 Javascript 验证电子邮件中 @ 符号的位置
- algorithm - Logic/Algorithm - Storing Chosen Items in a List as Ints - And undoing this again?
- pascal - Pascal error: left side cannot be assigned when trying to compile
- vuejs2 - vue.js 2 how use components in ES2015 webpack
- python - Pandas Dataframe - 按条件重置计数值的行迭代,无循环
- ios - How to prevent autoRotation in a view controller embedded in a navigation controller?
- android - Android FusedLocationProviderClient getLastLocation 总是第一次返回 null
- r - 如何用中值替换缺失值?
- javascript - 如何在第二次单击时从元素中删除类
- python-3.x - 网络爬虫无法从谷歌搜索中检索结果