【问题标题】:node-v57-linux-x64/grpc_node.node missing节点-v57-linux-x64/grpc_node.node 丢失
【发布时间】:2018-03-28 07:11:04
【问题描述】:

完全按照以下步骤操作时:

https://firebase.google.com/docs/admin/setup

然后部署到我的服务器,我得到这个错误:

2017-10-16 19:19:56 4199bf47fc2d ---> Starting app
2017-10-16 19:19:56 4199bf47fc2d Detected server.js file
2017-10-16 19:19:57 4199bf47fc2d module.js:529
2017-10-16 19:19:57 4199bf47fc2d     throw err;
2017-10-16 19:19:57 4199bf47fc2d     ^
2017-10-16 19:19:57 4199bf47fc2d 
2017-10-16 19:19:57 4199bf47fc2d Error: Cannot find module '/data/app/node_modules/firebase-admin/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64/grpc_node.node'
2017-10-16 19:19:57 4199bf47fc2d     at Function.Module._resolveFilename (module.js:527:15)
2017-10-16 19:19:57 4199bf47fc2d     at Function.Module._load (module.js:476:23)
2017-10-16 19:19:57 4199bf47fc2d     at Module.require (module.js:568:17)
2017-10-16 19:19:57 4199bf47fc2d     at require (internal/module.js:11:18)
2017-10-16 19:19:57 4199bf47fc2d     at Object.<anonymous> (/data/app/node_modules/firebase-admin/node_modules/grpc/src/node/src/grpc_extension.js:30:15)
2017-10-16 19:19:57 4199bf47fc2d     at Module._compile (module.js:624:30)
2017-10-16 19:19:57 4199bf47fc2d     at Object.Module._extensions..js (module.js:635:10)
2017-10-16 19:19:57 4199bf47fc2d     at Module.load (module.js:545:32)
2017-10-16 19:19:57 4199bf47fc2d     at tryModuleLoad (module.js:508:12)
2017-10-16 19:19:57 4199bf47fc2d     at Function.Module._load (module.js:500:3)

它安装在一个新文件夹中,最新的 npm 和所有,删除了重新安装的 node_modules 映射,npm install --unsafe-perm,npm rebuild 等。没有任何工作。为什么没有安装模块?

【问题讨论】:

    标签: node.js firebase github npm


    【解决方案1】:

    这对我有帮助:

    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。

    【讨论】:

    • 谢谢,这也有助于从 mac 部署到谷歌云功能
    • 嗨,我在 aws lambda 中遇到了同样的问题,在哪里运行这个命令?我在 aws lambda 中没有任何控制台,对吗?
    【解决方案2】:

    我刚刚遇到了同样的问题。对我们来说,问题是我们在 mac 上安装节点模块,而 firebase-admin 的安装正在为二进制文件放入一个特定于平台的文件。

    运行安装并检查此目录后,我看到:

    $ ls node_modules/firebase-admin/node_modules/grpc/src/node/extension_binary/
    node-v48-darwin-x64
    

    但是运行lamba的环境正在寻找:

     node-v48-linux-x64
    

    一个简单的解决方案是使用 docker 在 lambda 运行的相同环境中运行 npm install。在我们的案例中,我发现 lambci 项目已经为这个确切的用例预先构建了 docker 容器。在这里,我添加了一个 npm 脚本行来处理构建:

      "scripts": {
          "package": "rm -rf node_modules && docker run -v $PWD:/var/task -w /var/task lambci/lambda:build-nodejs6.10 npm install"
      },
    

    【讨论】:

    • 我真的很沮丧 >.
    • 它对我不起作用!我仍然得到Cannot find module '/tmp/fbfn_284TLWMJRfpLbZI/node_modules/firebase-admin/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64/grpc_node.node' 如果有人将 docker 卷安装到容器而不是在容器中安装 docker,例如:docker run -it -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker ubuntu:latest bash 那么他们必须提供主机文件路径来代替 $PWD,因为 docker 是从主机运行的机器而不是容器。
    • @Phani 我不确定我是否在关注。你能进一步描述你的设置吗?听起来你在码头工人的情况下是码头工人。你是说这种修改在这种情况下对你有用吗?
    • 是的 @ChristopherFitzner 我有一个运行我的 DEV 环境的 docker 容器。因此,我必须提供主机的绝对路径来代替 $PWD 才能使这项工作为我工作。
    【解决方案3】:

    就我而言,要解决我使用 macOS 的问题:

    本地运行:

    npm i -D

    并运行以下命令来部署生产:

    npm i --production --unsafe-perm --target=8.10.0 --target_platform=linux --target_arch=x64 --target_libc=glibc --update-binary

    您可以通过创建一个文件来运行上述命令,例如,sls-deploy.sh

    #!/usr/bin/env bash
    
    set -x
    set -e
    
    WORK_DIR=./lambda-tmp
    COMPILED_DIR=./compiled
    BIN_DIR=`npm bin`
    
    rm -rf $WORK_DIR
    rm -rf $COMPILED_DIR
    ${BIN_DIR}/tsc
    cp -r $COMPILED_DIR $WORK_DIR
    cp ./serverless.yml $WORK_DIR
    cp ./package.json $WORK_DIR
    .....
    cp ./firebase-api-key.json $WORK_DIR
    cp ./staging-firebase-api-key.json $WORK_DIR
    cd $WORK_DIR
    npm i --production --unsafe-perm
    npx serverless deploy --stage $ENV_NAME --force

    然后运行

    bash -x sls-deploy.sh

    【讨论】:

      猜你喜欢
      • 2018-11-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多