首页 > 解决方案 > 当 main 字段设置为“main”而不是“browser”时,在 Electron 应用程序中访问 firestore 会导致 INTERNAL UNHANDLED ERROR

问题描述

我在使用 VueJS 和 electron-builder 构建的电子桌面应用程序中使用 Firebase (Auth & Firestore)。运行应用程序时:

module.exports = {
   configureWebpack: {
      resolve: {
         mainFields: ['browser']
      }
   }
}

我最终从谷歌得到样板错误,我正在使用的 Firebase 安装是一个基于浏览器的包:

Warning: This is a browser-targeted Firebase bundle but it appears it is being
      run in a Node environment.  If running in a Node environment, make sure you
      are using the bundle specified by the "main" field in package.json.
      
      If you are using Webpack, you can specify "main" as the first item in
      "resolve.mainFields":
      https://webpack.js.org/configuration/resolve/#resolvemainfields
      
      If using Rollup, use the @rollup/plugin-node-resolve plugin and specify "main"
      as the first item in "mainFields", e.g. ['main', 'module'].
      https://github.com/rollup/@rollup/plugin-node-resolve

但是,在这种情况下,我可以同时使用 Auth 和 Firestore。

为了让 Firebase 满意,我将设置更改为mainFields: ['main'],但是,当我这样做时,Firestore 似乎对我大发雷霆,尽管 Auth 现在按预期工作,没有浏览器捆绑警告:

@firebase/firestore: Firestore (8.2.5): INTERNAL UNHANDLED ERROR:  Error: Invalid package E:\Projects\project_name\node_modules\electron\dist\resources\electron.asar
    at createError (electron/js2c/asar.js:126:17)
    at Object.fs.readFileSync (electron/js2c/asar.js:545:27)
    at fetch (webpack-internal:///./node_modules/protobufjs/src/root.js:172:34)
    at Root.load (webpack-internal:///./node_modules/protobufjs/src/root.js:206:13)
    at Root.loadSync (webpack-internal:///./node_modules/protobufjs/src/root.js:247:17)
    at Object.loadSync (webpack-internal:///./node_modules/@grpc/proto-loader/build/src/index.js:223:29)
    at loadProtos (webpack-internal:///./node_modules/@firebase/firestore/dist/node-cjs/database-a420afb3-ec4c8b13.js:14877:41)
    at newConnection (webpack-internal:///./node_modules/@firebase/firestore/dist/node-cjs/database-a420afb3-ec4c8b13.js:14898:18)
    at OnlineComponentProvider.createDatastore (webpack-internal:///./node_modules/@firebase/firestore/dist/node-cjs/database-a420afb3-ec4c8b13.js:19565:26)
    at OnlineComponentProvider.eval (webpack-internal:///./node_modules/@firebase/firestore/dist/node-cjs/database-a420afb3-ec4c8b13.js:19545:47)

关于可能发生的事情以及我可以做些什么来让 Auth 和 Firestore 同时工作,而不抱怨基于浏览器的捆绑问题的任何想法?

标签: javascriptfirebasevue.jselectron

解决方案


推荐阅读