首页 > 解决方案 > 错误:无法加载 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.jsnpm

解决方案


我终于通过执行以下操作解决了这个问题:

  • 确保安装了正确版本的 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

这可能会以更优雅的方式解决,但至少它有效。


推荐阅读