我已经遇到这个问题了几天,但一直没有找到解决方案。根据我的研究,这似乎是一个已知问题,但是所提供的修复均不适用于我的情况。
我尝试过:
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"
},
任何帮助将不胜感激。
答案 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