meteor node node-gyp bindings.node dll报错解决方案

18 篇文章 0 订阅
13 篇文章 1 订阅

1.项目背景

meteor框架项目,用npm安装的usb包。
因为要用到usb的功能。
这里涉及一些硬件的连接,所以有node-gyp的过程。

2.报错原因

我用了npm install usb命令来安装usb包,所以错了。
应该用meteor npm install usb命令来安装usb包才对。
**区别:**应该是安装包的时候要结合meteor内部做了一些处理。所以要用meteor npm install usb
也可以简写成meteor npm i usb

3.报错内容

node-gyp(node-generate your project)我的报错如下
Error: The module ‘\?\D:\pratdemo\meteor_demo\meteor_upload_vue\node_modules\usb\build\Release\usb_bindings.node’
W20200401-09:34:06.239(8)? (STDERR) was compiled against a different Node.js version using
W20200401-09:34:06.241(8)? (STDERR) NODE_MODULE_VERSION 64. This version of Node.js requires
W20200401-09:34:06.241(8)? (STDERR) NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
W20200401-09:34:06.242(8)? (STDERR) the module (for instance, using npm rebuild or npm install).
W20200401-09:34:06.244(8)? (STDERR) at Object.Module._extensions…node (module.js:682:18)
W20200401-09:34:06.245(8)? (STDERR) at Module.load (module.js:566:32)
W20200401-09:34:06.245(8)? (STDERR) at tryModuleLoad (module.js:506:12)
W20200401-09:34:06.246(8)? (STDERR) at Function.Module._load (module.js:498:3)
W20200401-09:34:06.247(8)? (STDERR) at Module.require (module.js:597:17)
W20200401-09:34:06.248(8)? (STDERR) at require (internal/module.js:11:18)
W20200401-09:34:06.249(8)? (STDERR) at bindings (D:\pratdemo\meteor_demo\meteor_upload_vue\node_modules\bindings\bindings.js:112:48)
W20200401-09:34:06.251(8)? (STDERR) at Object. (D:\pratdemo\meteor_demo\meteor_upload_vue\node_modules\usb\usb.js:1:57)
W20200401-09:34:06.252(8)? (STDERR) at Module._compile (module.js:653:30)
W20200401-09:34:06.259(8)? (STDERR) at Object.Module._extensions…js (module.js:664:10)
W20200401-09:34:06.261(8)? (STDERR) at Module.load (module.js:566:32)
W20200401-09:34:06.261(8)? (STDERR) at tryModuleLoad (module.js:506:12)
W20200401-09:34:06.262(8)? (STDERR) at Function.Module._load (module.js:498:3)
W20200401-09:34:06.263(8)? (STDERR) at Module.require (module.js:597:17)
W20200401-09:34:06.265(8)? (STDERR) at require (internal/module.js:11:18)
W20200401-09:34:06.269(8)? (STDERR) at npmRequire (D:\pratdemo\meteor_demo\meteor_upload_vue.meteor\local\build\programs\server\npm-require.js:133:10)

从报错的加粗内容中可以看到,该usb包在当前环境要求的是NODE_MODULE_VERSION 57这版本的包,而我安装的却是NODE_MODULE_VERSION 64所以错了。

4.解决办法

1.首先通过npm uninstall usb 卸载usb包,或者你也可以在node_modules里面找到usb文件夹整个删除。
2.然后通过meteor npm install usb安装usb包,就正常了。这是官方推荐的安装方式。

温馨提示:该npm的usb包一定要通过meteor的server端引入和使用,然后通过前端触发server端的方法就好,前端触发server端的方法用到meteor的cfs:http-methods 可以去这里搜索https://atmospherejs.com/?q=cfs%3Ahttp-methods
npm的usb包在前端client直接引入会报错的。除非你前端用nwjs引入也可能行。

5.总结

1.都怪自己自以为是:自以为npm i usbmeteor npm i usb安装方式会是一样的效果。好像运行的时候,也能安装上usb包啊。但是会有微小的差别
如果该npm包只是前端的功能的,例如vue包,其实这两个安装方式应该都可以。
但如果涉及到后台或者硬件方面,就只能用meteor npm i usb来安装了。因为usb包涉及到了硬件方面功能。(电脑usb接口)
2.npm的包,尽量在后台server端引入和使用。
var usb = require('usb')

3.npm的包,涉及到硬件方面的话,不要在前端引入,会报dll找不到的错误,如Error: A dynamic link library (DLL) initialization routine failed.
bindings.node报错

好吧,关于meteor使用的心得,希望大家多多交流。
如有不懂,欢迎评论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值