将Firebase添加到电子项目的问题,gRPC依赖问题

时间:2018-08-07 01:27:25

标签: node.js firebase electron

我已经遇到这个问题了几天,但一直没有找到解决方案。根据我的研究,这似乎是一个已知问题,但是所提供的修复均不适用于我的情况。

我尝试过:

npm rebuild

npm install grpc --runtime=electron --target=1.7.6

我尝试的另一件事是将其添加到package.json文件:

  "resolutions": {
    "grpc": "^1.12.0"
  },

我还尝试过上下更改电子,grpc,firebase的版本。

我不断出现在控制台上的错误是:

E:\GitHub\Portfolio-Manager\node_modules\grpc\src\grpc_extension.js:53 Uncaught Error: Failed to load gRPC binary module because it was not installed for the current system
    Expected directory: electron-v1.7-win32-x64-unknown
    Found: [node-v59-win32-x64-unknown]
    This problem can often be fixed by running "npm rebuild" on the current system
    Original error: Cannot find module 'E:\GitHub\Portfolio-Manager\node_modules\grpc\src\node\extension_binary\electron-v1.7-win32-x64-unknown\grpc_node.node'
        at Object.<anonymous> (E:\GitHub\Portfolio-Manager\node_modules\grpc\src\grpc_extension.js:53)
        at Object.<anonymous> (E:\GitHub\Portfolio-Manager\node_modules\grpc\src\grpc_extension.js:63)
        at Module._compile (VM129 module.js:571)
        at Object.Module._extensions..js (VM129 module.js:580)
        at Module.load (VM129 module.js:488)
        at tryModuleLoad (VM129 module.js:447)
        at Function.Module._load (VM129 module.js:439)
        at Module.require (VM129 module.js:498)
        at require (VM130 module.js:20)
        at Object.<anonymous> (E:\GitHub\Portfolio-Manager\node_modules\grpc\src\client_interceptors.js:145)

当前依赖项:

  "dependencies": {
    "axios": "^0.16.1",
    "firebase": "^5.3.1",
    "flexboxgrid": "^6.3.1",
    "grpc": "^1.12",
    "nedb": "^1.8.0",
    "numeral": "^2.0.6",
    "vue": "^2.3.3",
    "vue-electron": "^1.0.6",
    "vue-router": "^3.0.1",
    "vue2-scrollbar": "0.0.3"
  },

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

经过一番研究,我发现了一个可以正确重建所需二进制文件的命令。

npm rebuild --runtime=electron --target=1.8.4 --disturl=https://atom.io/download/electron

自此发布的关于电子1.8。*的版本应该可以使用。

答案 1 :(得分:0)

在您的devDependencies中安装“电子重建”

npm install --save-dev electron-rebuild

在项目文件夹中运行时

npm prune && npm install && electron-rebuild

如果这没有帮助,是否可以在全球范围内安装?

npm install -g grpc

答案 2 :(得分:0)

如果您不想将本机模块添加到Electron应用程序中,则可以使用Electron中的commonjs捆绑包。此外,并非每个Firebase子模块都需要grpc。就我而言,只有firestore需要grpc,因此我可以按以下方式加载我的firebase组件(auth和firestore):

var firebase = require('@firebase/app')
require('@firebase/auth') // populates firebase.default.auth
require('@firebase/firestore/dist/index.cjs.js') // populates firebase.default.firestore
firebase = firebase.default