日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

meteor node node-gyp bindings.node dll報錯解決方案

作者:yuanyi正 更新時間: 2022-01-16 編程語言

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使用的心得,希望大家多多交流。
如有不懂,歡迎評論!

原文鏈接:https://blog.csdn.net/yuan_618859/article/details/105238763

欄目分類
最近更新