Ошибка с Firebase в приложении Electron: не удалось загрузить gRPC

Я создаю приложение Electron и в файле renderer.js использую Firebase Admin для получения данных Firestore. Однако всякий раз, когда я запускаю его, он возвращает эту ошибку в журналах.

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 reboot», но это все равно не помогло. Я также попытался обновить 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)

Любые идеи? Я пытался решить это в течение нескольких часов, но, похоже, не могу понять это.


person nachshon f    schedule 03.09.2018    source источник


Ответы (2)


Это сообщение об ошибке указывает на то, что gRPC был установлен для Node, а не для Electron. У Electron другой двоичный интерфейс, поэтому бинарные модули, такие как gRPC, необходимо устанавливать специально для Electron. Как правило, вы можете сделать это, просто запустив npm rebuild --runtime=electron --target=2.0.0 (модифицированный в соответствии с версией Electron, которую вы хотите использовать).

person murgatroid99    schedule 04.09.2018
comment
есть ли автоматизированный способ npm install избежать этой проблемы? - person Felipe; 04.08.2019
comment
Вы можете поместить команду, которую я предложил, в свой сценарий установки. Или, может быть, как postinstall скрипт/крючок в вашем собственном package.json файле. - person murgatroid99; 04.08.2019

Первоначальный ответ @murgatroid99 был полезен в то время, и команда после установки отлично работала до электронной версии v7, где проблема вернулась.

Для всех, кто сталкивается с этой проблемой, я нашел лучшее решение:

пакет electron-rebuild

npm install electron-rebuild --save-dev

Запустите его, используя

npx electron-rebuild

Или добавьте его как команду после установки

{
  ...
  "scripts": {
    "postinstall": "electron-rebuild"
  },
  ...
}

Дополнительная информация находится в официальном Электронная документация

person Felipe    schedule 12.12.2019