错误:无法加载gRPC二进制模块

时间:2018-06-18 13:01:58

标签: node.js npm

我一直在关注教程:https://docs.particle.io/tutorials/integrations/google-cloud-platform/

尝试将粒子光子的湿度和温度数据发送到Google Cloud Datastore。高级架构如下:

enter image description here

其中数据从Photon发送到Particle Cloud到Google Cloud(Pub / Sub),并以Node.js作为中介发送到Google Datastore。

一切都适用于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,这似乎导致了上述错误。

4 个答案:

答案 0 :(得分:0)

我终于通过以下方式解决了这个问题:

  • 确保安装了正确版本的Node:

    npm install --target = 10.0.0 --target_platform = linux --target_arch = x64

  • 通过上一个命令将文件夹loader.load_file(args.file)复制到另外两个文件夹(见下文),而不是最初安装的位置(csv)。

node-v64-linux-x64-glibc /home/lennart/Desktop/Cloud/google-cloud-datastore-tutorial-master/node_modules/grpc/src/node/extension_binary

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

答案 1 :(得分:0)

我在Docker中遇到node:10-alpine基本映像的相同问题。 适用于我的解决方案还在容器的入口点上npm rebuild运行。

FROM node:10-alpine WORKDIR /app COPY package*.json . RUN npm install COPY . . CMD npm rebuild && npm run migrate:run

可能运行相同的npm rebuild应该可以在本地解决该问题,或者npm可能存在问题,因为它无法及时获取正确的二进制文件。 yarn会有所作为吗?

答案 2 :(得分:0)

请检查调节器用户的NODE&NPM版本和SUPER USER NODE&NPM版本是否相同。

答案 3 :(得分:0)

对我来说,一旦我使用yarn --force切换到正确的node.js版本,便完成了一个简单的nvm。我最初使用错误的版本来完成yarn