Skip to content

[9.5.0] Error: Cannot find module '@grpc/grpc-js/package.json' in electron #5752

Closed
@AviVahl

Description

@AviVahl

[REQUIRED] Describe your environment

  • Operating System version: Fedora 35
  • Browser version: Firefox 64
  • Firebase SDK version: 9.5.0
  • Firebase Product: firestore

[REQUIRED] Describe the problem

Steps to reproduce:

Using firebase inside an electron app. I'm trying to upgrade from v8 to v9, and am encountering the following error:

Error: Cannot find module '@grpc/grpc-js/package.json'
Require stack:
- /home/avi/projects/<our-project-name>/node_modules/electron/dist/resources/electron.asar/renderer/init.js
    at Module._resolveFilename (:3000/internal/modules/cjs/loader.js:887)
    at Function.o._resolveFilename (:3000/electron/js2c/renderer_init.js:33)
    at Module._load (:3000/internal/modules/cjs/loader.js:732)
    at Function.f._load (:3000/electron/js2c/asar_bundle.js:5)
    at Function.o._load (:3000/electron/js2c/renderer_init.js:33)
    at Module.require (:3000/internal/modules/cjs/loader.js:959)
    at require (:3000/internal/modules/cjs/helpers.js:88)
    at Object.../../node_modules/@firebase/firestore/dist/index.node.cjs.js (:3000/vendors-node_modules_firebase_compat_firestore_dist_index_cjs_js.electron-renderer.js:15278)
    at __webpack_require__ (main.electron-renderer.js:7855)
    at Object.../../node_modules/@firebase/firestore-compat/dist/index.node.cjs.js (:3000/vendors-node_modules_firebase_compat_firestore_dist_index_cjs_js.electron-renderer.js:15)

Our setup bundles the library using webpack with electron-renderer target. I guess the attempt to dynamically create require breaks out of the bundling process.

Relevant Code:

The code that fails is:

// This is a hack fix for Node ES modules to use `require`.
// @ts-ignore To avoid using `--module es2020` flag.
const require$1 = module__default["default"].createRequire(new (require('url').URL)('file:' + __filename).href);
// eslint-disable-next-line @typescript-eslint/no-require-imports
const { version: grpcVersion } = require$1('@grpc/grpc-js/package.json');

Now, I realize this piece of code already came up in #5687
The chosen solution doesn't work for our use case, I believe.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions