Closed
Description
[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.