Не удалось загрузить двоичный модуль gRP C, поскольку он не был установлен для текущей системы - PullRequest
0 голосов
/ 31 марта 2020

Я создаю электронное приложение, которое использует базу данных Firebase в реальном времени. Я следовал учебнику от YouTube и читал документы с сайта Firebase. Все сделано отлично. Мой код: main. html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
    <!-- https://electronjs.org/docs/tutorial/security#csp-meta-tag -->

  </head>
  <body>
    <h1>Hello World!</h1>
    We are using node <script>document.write(process.versions.node)</script>,
    Chrome <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
  </body>
  <script>
    require('./renderer.js')
  </script>
</html>

main. js:

const { app, BrowserWindow } = require('electron')

function createWindow () {
  // Create the browser window.
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  // and load the index.html of the app.
  win.loadFile('main.html')
}

app.whenReady().then(createWindow)

Renderer. js (из учебника)

var firebase = require("firebase");
// Your web app's Firebase configuration
var firebaseConfig = {
    apiKey: "***",
    authDomain: "***",
    databaseURL: "***",
    projectId: "***",
    storageBucket: "***",
    messagingSenderId: "***",
    appId: "***",
    measurementId: "***"
  };
  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);

Примечание !! Я использовал *** для замены данных, просто чтобы быть уверенным, что они все равно не отображаются. Они есть в моей программе.

пакет. json

{
  "name": "rubik",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@grpc/grpc-js": "^0.7.4",
    "firebase": "^7.13.1"
  },
  "devDependencies": {
    "electron": "^8.2.0"
  }
}

Я получаю следующую ошибку:

Uncaught Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: electron-v8.2-win32-x64-unknown
Found: [node-v72-win32-x64-unknown]
This problem can often be fixed by running "npm rebuild" on the current system
Original error: Cannot find module 'C:\Users\Alex\Desktop\rubik\node_modules\grpc\src\node\extension_binary\electron-v8.2-win32-x64-unknown\grpc_node.node'
Require stack:
- C:\Users\Alex\Desktop\rubik\node_modules\grpc\src\grpc_extension.js
- C:\Users\Alex\Desktop\rubik\node_modules\grpc\src\client_interceptors.js
- C:\Users\Alex\Desktop\rubik\node_modules\grpc\src\client.js
- C:\Users\Alex\Desktop\rubik\node_modules\grpc\index.js
- C:\Users\Alex\Desktop\rubik\node_modules\@firebase\firestore\dist\index.node.cjs.js
- C:\Users\Alex\Desktop\rubik\node_modules\firebase\dist\index.node.cjs.js
- C:\Users\Alex\Desktop\rubik\renderer.js
- C:\Users\Alex\Desktop\rubik\main.html
    at Object.<anonymous> (C:\Users\Alex\Desktop\rubik\node_modules\grpc\src\grpc_extension.js:53)
    at Object.<anonymous> (C:\Users\Alex\Desktop\rubik\node_modules\grpc\src\grpc_extension.js:64)
    at Module._compile (internal/modules/cjs/loader.js:968)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:986)
    at Module.load (internal/modules/cjs/loader.js:816)
    at Module._load (internal/modules/cjs/loader.js:728)
    at Module._load (electron/js2c/asar.js:717)
    at Function.Module._load (electron/js2c/asar.js:717)
    at Module.require (internal/modules/cjs/loader.js:853)
    at require (internal/modules/cjs/helpers.js:74)

Я все перепробовал inte rnet относится к этой ошибке. Я переустановил nodejs и npm с удалением папки и все такое.

1 Ответ

0 голосов
/ 31 марта 2020

Я не уверен, можно ли использовать gRP C в приложении Electron, но предложил бы выбрать другой выход. Прямо сейчас вы загружаете SDK для всех продуктов Firebase в свое приложение, что, вероятно, на намного больше, чем необходимо. Это не только увеличивает размер вашего приложения, но также вводит все виды ненужных зависимостей, таких как gRP C (который используется только Firestore).

Самый простой способ уменьшить размер приложения и избавиться от сообщения об ошибке - включить только те Firebase SDK, которые вы на самом деле используете:

var firebase = require("firebase/app");
require("firebase/database")

Подробнее об этом см. на вкладке Node.js в добавить Firebase SDK и инициализировать раздел Firebase в документации Firebase. Даже если вы не используете Node.js напрямую, вы можете посмотреть здесь примеры с использованием метода require импорта модулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...