Electron 应用程序上的 Firebase 出错:无法加载 gRPC
Error with Firebase on Electron app: Failed to load gRPC
我正在构建一个 Electron 应用程序,并且在 renderer.js 文件中,我正在使用 Firebase Admin 获取 Firestore 数据。但是,每当我 运行 它时,它 returns 在日志中出现这个错误..
Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: electron-v2.0-darwin-x64-unknown
Found: [node-v48-darwin-x64-unknown]
This problem can often be fixed by running "npm rebuild" on the current system
我试过运行"npm rebuild",但还是没有解决。
我还尝试更新 Firebase Admin 和 gRPC。
这是 renderer.js 文件中的代码...
// This file is required by the index.html file and will
// be executed in the renderer process for that window.
// All of the Node.js APIs are available in this process.
const admin = require('firebase-admin');
var serviceAccount = require('./credentials.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://mytestapp.firebaseio.com"
});
var db = admin.firestore();
const settings = {
timestampsInSnapshots: true
};
db.settings(settings);
function LoadList() {
db.collection("Orders").get().then(function(Collection){
Collection.forEach(function(OrderDoc){
console.log(OrderDoc.id)
})
}).catch(function(err){
console.error(err);
});
}
document.querySelector('#ListSec').addEventListener('click', LoadOrderList)
有什么想法吗?几个小时以来我一直在尝试解决这个问题,但似乎无法弄清楚。
该错误消息表明 gRPC 是为 Node 安装的,而不是为 Electron 安装的。 Electron 有一个不同的二进制接口,所以像 gRPC 这样的二进制模块需要专门为 Electron 安装。您通常可以通过 运行 npm rebuild --runtime=electron --target=2.0.0
(修改以匹配您要使用的 Electron 版本)来完成此操作。
@murgatroid99 的原始回答在当时很有帮助,安装后命令在 electron v7 之前运行良好,问题再次出现。
对于遇到此问题的其他人,我找到了更好的解决方案:
electron-rebuild 包
npm install electron-rebuild --save-dev
运行 使用
npx electron-rebuild
或者,将其添加为安装后命令
{
...
"scripts": {
"postinstall": "electron-rebuild"
},
...
}
更多信息在官方Electron Documentation
我正在构建一个 Electron 应用程序,并且在 renderer.js 文件中,我正在使用 Firebase Admin 获取 Firestore 数据。但是,每当我 运行 它时,它 returns 在日志中出现这个错误..
Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: electron-v2.0-darwin-x64-unknown
Found: [node-v48-darwin-x64-unknown]
This problem can often be fixed by running "npm rebuild" on the current system
我试过运行"npm rebuild",但还是没有解决。 我还尝试更新 Firebase Admin 和 gRPC。
这是 renderer.js 文件中的代码...
// This file is required by the index.html file and will
// be executed in the renderer process for that window.
// All of the Node.js APIs are available in this process.
const admin = require('firebase-admin');
var serviceAccount = require('./credentials.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://mytestapp.firebaseio.com"
});
var db = admin.firestore();
const settings = {
timestampsInSnapshots: true
};
db.settings(settings);
function LoadList() {
db.collection("Orders").get().then(function(Collection){
Collection.forEach(function(OrderDoc){
console.log(OrderDoc.id)
})
}).catch(function(err){
console.error(err);
});
}
document.querySelector('#ListSec').addEventListener('click', LoadOrderList)
有什么想法吗?几个小时以来我一直在尝试解决这个问题,但似乎无法弄清楚。
该错误消息表明 gRPC 是为 Node 安装的,而不是为 Electron 安装的。 Electron 有一个不同的二进制接口,所以像 gRPC 这样的二进制模块需要专门为 Electron 安装。您通常可以通过 运行 npm rebuild --runtime=electron --target=2.0.0
(修改以匹配您要使用的 Electron 版本)来完成此操作。
@murgatroid99 的原始回答在当时很有帮助,安装后命令在 electron v7 之前运行良好,问题再次出现。
对于遇到此问题的其他人,我找到了更好的解决方案:
electron-rebuild 包
npm install electron-rebuild --save-dev
运行 使用
npx electron-rebuild
或者,将其添加为安装后命令
{
...
"scripts": {
"postinstall": "electron-rebuild"
},
...
}
更多信息在官方Electron Documentation