我一直在关注教程:https://docs.particle.io/tutorials/integrations/google-cloud-platform/
尝试将粒子光子的湿度和温度数据发送到Google Cloud Datastore。高级架构如下:
其中数据从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,这似乎导致了上述错误。
答案 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
。