我正在尝试在我的服务器中使用Firebase管理员SDK。当我部署时,我得到错误,我在firebase-admin node_module map中缺少文件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。
我如何/在哪里下载该文件?有没有人可以把文件放在这里,所以我可以手动添加它?
错误:找不到模块 ' /data/app/node_modules/grpc/src/node/extension_binary/node-v59-linux-x64/grpc_node.node'
答案 0 :(得分:5)
这种问题通常是由于在一个系统上安装库,然后在需要不同二进制文件的其他系统上部署和运行它而引起的。
解决此问题的最简单方法是在部署的系统上部署后运行npm rebuild
。
或者,如果npm rebuild
不是选项,则可以通过运行带有一些额外选项的npm install
来为要部署的系统预安装二进制文件。 --target
参数允许您安装不同版本的Node。 --target=9.0.0
的参数为节点9安装二进制文件(只有主要版本必须匹配)。 --target_platform
参数允许您为特定操作系统安装:windows
,linux
或darwin
(Mac)。 --target_arch
参数允许您安装其他处理器体系结构:ia32
,x64
或arm
。最后,--target_libc
参数允许您选择为不同的libc构建的二进制文件:glibc
或musl
(对于Alpine Linux)。
因此,在您的情况下,您应该能够通过运行
来获取该二进制文件npm install --target=9.0.0 --target_platform=linux --target_arch=x64
答案 1 :(得分:1)
我遇到了同样的问题。您可以在此处下载文件:https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.7.1/node-v59-linux-x64.tar.gz
答案 2 :(得分:0)
根据@ 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;这将同时安装两个运行时版本,这意味着我可以在本地进行开发和测试,然后再部署到Lambda。