node-v59-linux-x64/grpc_node.node 丢失

node-v59-linux-x64/grpc_node.node is missing

我正在尝试在我的服务器中使用 Firebase admin SDK。部署时出现错误,我在 firebase-admin node_module 地图中缺少文件 node-v59-linux-x64/grpc_node.node。我在我的包中添加了 "grpc": "1.7.1",但在 NPM 更新后我仍然没有得到该文件。我得到一个旧版本,node-v57。我也检查了这个路径 https://registry.npmjs.org/grpc/-/grpc-1.7.1.tgz,但我找不到文件。我删除了我的 node_modules 地图并再次 运行 npm install,仍然没有 node-v59。

How/where 我可以下载那个文件吗?有没有人可以把文件放在这里,这样我就可以手动添加了?

Error: Cannot find module '/data/app/node_modules/grpc/src/node/extension_binary/node-v59-linux-x64/grpc_node.node'

我遇到了同样的问题。您可以在此处下载文件:https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.7.1/node-v59-linux-x64.tar.gz

这种问题通常是由于在一个系统上安装库,然后在需要不同二进制文件的不同系统上部署和 运行ning 引起的。

此问题最简单的解决方案是 运行 npm rebuild 在您部署的系统上部署后。

或者,如果 npm rebuild 不是一个选项,您可以通过 运行ning npm install 为您正在部署的系统预安装二进制文件以及一些额外的选项。 --target 参数允许您安装不同版本的 Node。 --target=9.0.0 的参数为 Node 9 安装二进制文件(只有主要版本必须匹配)。 --target_platform 参数允许您针对特定操作系统进行安装:windowslinuxdarwin (Mac)。 --target_arch 参数允许您安装不同的处理器体系结构:ia32x64arm。最后,--target_libc 参数允许您 select 为不同的 libc 构建的二进制文件:glibcmusl(对于 Alpine Linux)。

因此,在您的情况下,您应该能够通过 运行ning

获得该二进制文件
npm install --target=9.0.0 --target_platform=linux --target_arch=x64

这对我的案例有帮助,基于@murgatroid99 的回答:

npm rebuild --target=8.1.0 --target_platform=linux --target_arch=x64 --target_libc=glibc --update-binary

它会将所需的二进制文件下载到您的 node_modules/grpc 目录。

我在我的开发机器上 运行 macOS X,我正在部署到 AWS Lambda;这会同时安装 运行time 版本,这意味着我可以在本地开发和测试,然后部署到 Lambda。