node.js - 错误:无法加载 gRPC 二进制模块
问题描述
我一直在关注教程:https ://docs.particle.io/tutorials/integrations/google-cloud-platform/
尝试将湿度和温度数据从 Particle Photon 发送到 Google Cloud Datastore。高层架构如下:
数据从 Photon 发送到 Particle Cloud 再到 Google Cloud (Pub/Sub) 和 Google Datastore,其中 Node.js 作为中介。
一切都适用于 Pub/Sub,但是当我尝试激活节点脚本(调用:node tutorial.js)时,我收到错误。
调用 node tutorial.js 时,我收到:
$ node tutorial.js
Authenticating with Google Cloud...
/home/lennart/node_modules/grpc/src/grpc_extension.js:55
throw error;
^
Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: node-v64-linux-x64-glibc
Found: [node-v57-linux-x64-glibc]
This problem can often be fixed by running "npm rebuild" on the current system
Original error: Cannot find module '/home/lennart/node_modules/grpc/src/node/extension_binary/node-v64-linux-x64-glibc/grpc_node.node'
at Object.<anonymous> (/home/lennart/node_modules/grpc/src/grpc_extension.js:53:17)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/home/lennart/node_modules/grpc/src/client_interceptors.js:145:12)
at Module._compile (internal/modules/cjs/loader.js:702:30)
我按照错误消息中的建议进行了尝试npm rebuild
,但这没有改变。
不同软件包的当前版本:
$ npm -v
6.1.0
$ node -v
v10.4.1
$ openssl version -v
OpenSSL 1.0.2o 27 Mar 2018
以前我在 OpenSSL 和 Node 兼容性方面遇到了问题,这可以从:Error undefined symbol: SSL_library_init
. 安装了节点 v10.4.1,这似乎导致了上述错误。
解决方案
我终于通过执行以下操作解决了这个问题:
确保安装了正确版本的 Node:
npm install --target=10.0.0 --target_platform=linux --target_arch=x64
通过上一个命令将文件夹复制
node-v64-linux-x64-glibc
到最初安装位置 ( ) 之外的另外两个文件夹(见下文) 。/home/lennart/Desktop/Cloud/google-cloud-datastore-tutorial-master/node_modules/grpc/src/node/extension_binary
/home/lennart/node_modules/@google-cloud/video-intelligence/node_modules/grpc/src/node/extension_binary
/home/lennart/node_modules/grpc/src/node/extension_binary
这可能会以更优雅的方式解决,但至少它有效。
推荐阅读
- javascript - 反应阻止从父容器更新子容器
- javascript - 单击时使用 Raycaster 更改 Box 面的颜色
- xamarin.android - 如何从蓝牙 LE (SIG) 十六进制值中提取温度十进制值
- python - 即使验证失败,棉花糖序列化错误也是空的
- python - 并行化大 CSV 文件进程
- c - 在 Contiki 中发送和接收结构 - 处理指针和结构
- javascript - 验证撇号 cms 撇号-件-提交-小部件中的布尔字段
- wordpress - 复制重力表格时可以保留附加提要设置吗?
- r - 用 mapply() 为多个参数留一个吗?
- node.js - 如何访问 Docker 容器中主机上运行的外部数据库服务?