首页 > 解决方案 > ReferenceError:firebase_app__WEBPACK_IMPORTED_MODULE_0__ 未在 userFunction(Autodesk 的查看器)中定义

问题描述

我由 webpack 创建的 app.bundle.js 正在发挥作用:

/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16);

var firebaseConfig = {
  //config options for database
}; // Initialize Firebase

var defaultProject = firebase_app__WEBPACK_IMPORTED_MODULE_0__.default.initializeApp(firebaseConfig);
var defaultFirestore = defaultProject.firestore();
console.log("Firebase globals: ", firebase_app__WEBPACK_IMPORTED_MODULE_0__.default);

function userFunction(pdb) {
  console.log("Firebase globals inside function: ", firebase_app__WEBPACK_IMPORTED_MODULE_0__.default);
}

如您所见firebase_app_WEBPACK_IMPORTED_MODULE_0__,在顶部定义了,但是当加载网页错误ReferenceError: firebase_app__WEBPACK_IMPORTED_MODULE_0__未定义时突然弹出。

更新: 我实际上发现了错误,基本上我正在使用Autodesk 的 Forge Viewer Library,它在某些时候调用我的函数 userFunction,userFunction 需要 firebase 一次性处理列表,遗憾的是这个函数是在 webworker 中执行的(异步)这意味着我不能轻易地引用函数范围之外的变量。

标签: node.jswebpackmodulees6-promiseautodesk-viewer

解决方案


您必须为要使用的每个 Firebase SDK 添加导入。

import firebase from 'firebase/app'
import 'firebase/storage'
import 'firebase/analytics'
import ....

如果您已经这样做了,您还需要它们在反应项目中的顺序正确

正确的顺序:

import './initializedFirebase'

import App from './App'

如果您在 initializeFirebase.js 之前导入 App.jsx,则在初始化之前使用 firebase.storage()。

还可以考虑升级您的 Firebase 版本,这可以解决许多问题。


推荐阅读