javascript - 当 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 同时工作,而不抱怨基于浏览器的捆绑问题的任何想法?
解决方案
推荐阅读
- filefilter - 尝试使用 FileFilter 时出现 java.lang.NoClassDeffoundError
- python - 甲板洗牌算法不够“人性化”
- ajax - 如何将 formcollection 转换为模型 ins ASP.NET MVC
- c# - 将 IAsyncEnumerable 与 Dapper 一起使用
- flutter - 有没有办法在 Flutter 中打开抽屉后立即隐藏状态栏?
- firebase - 颤振:CachedNetworkImage 不缓存图像
- ios - 设置根视图控制器时,我可以保留模态呈现的视图控制器吗?
- javascript - 当 map 函数在代码中时,它返回 undefined,当 console.log 它返回一个空对象和一个数据。我只想要数据
- api - CQRS 和 DDD:文件上传
- button - nattable 中的按钮覆盖了我桌子的一半,有人可以解释为什么吗?