我用next (SSR)和firebase(firestore和hosting)制作了一个简单的web应用程序。它有一些页面,如索引,关于,联系和文本编辑器。
当我做npm run build
时,它工作没有问题。但是对于npm run generate
,它有一个错误消息,如:
ReferenceError: navigator is not defined
at Object.areCookiesEnabled (C:appnode_modules@firebaseutildistindex.node.cjs.js:656:5)
at warnOnBrowserContextMismatch (C:appnode_modules@firebaseanalyticsdistindex.cjs.js:1072:15)
at factory (C:appnode_modules@firebaseanalyticsdistindex.cjs.js:1086:5)
at Component.instance.INTERNAL.registerComponent.component.Component.setServiceProps.settings [as instanceFactory] (C:appnode_modules@firebaseanalyticsdistindex.cjs.js:1165:16)
at Provider.getOrInitializeService (C:appnode_modules@firebasecomponentdistindex.cjs.js:222:39)
at Provider.getImmediate (C:appnode_modules@firebasecomponentdistindex.cjs.js:120:33)
at FirebaseAppImpl._getService (C:appnode_modules@firebaseappdistindex.node.cjs.js:230:49)
at FirebaseAppImpl.firebaseAppImpl.<computed> [as analytics] (C:appnode_modules@firebaseappdistindex.node.cjs.js:442:39)
at Object.serviceNamespace [as analytics] (C:appnode_modules@firebaseappdistindex.node.cjs.js:422:45)
at Object.<anonymous> (plugins/firebase.js:22:0)
at __webpack_require__ (webpack/bootstrap:25:0)
at Module.<anonymous> (server.js:2766:16)
at __webpack_require__ (webpack/bootstrap:25:0)
at Object.<anonymous> (server.js:639:18)
at __webpack_require__ (webpack/bootstrap:25:0)
at server.js:118:18
当我在开发模式下运行应用程序时,这个消息实际上偶尔会出现,当我刷新时它通常会消失。下面是我的修复方法:
- 删除node_module文件夹和我最终在package中不使用的依赖项。重新导入"
npm install
"文件。我甚至删除了与firebase相关的文件和文件夹,重新安装了firebase工具并重新启动。 - 一开始,错误信息只出现在/about页面,其他页面都是正确的,所以我删除了about页面,然后错误再次出现在另一个页面。
- 在#2之前,我认为这个错误发生是因为只有关于页面没有。我做了一些研究,发现这是因为页面仅限客户端或仅限服务器端等等……所以我故意添加了一些脚本代码,但它也不起作用。
我在这里或其他论坛上查阅了几十篇文章,但没有一篇能帮助我找出我做错了什么。
这个问题似乎与节点或服务器端的事情有关,但我对Vue和node都很陌生,所以我不能完全理解我必须做什么以及我应该在哪里修改代码。
顺便说一句,我的节点是最新的LTS版本,vue、next和所有依赖项也是最新的版本。
提前感谢。
他们不知道这是否有帮助,我在使用NextJs时遇到了同样的问题。我是这样解决的。我也没有在任何SSR代码中使用它,所以我不知道发生了什么。
const analytics = (): firebase.analytics.Analytics => firebase.analytics();
然后在你的代码中使用
analytics().logEvent();