ReferenceError:进程未在 firebase-messaging-sw.js 中定义

Posted

技术标签:

【中文标题】ReferenceError:进程未在 firebase-messaging-sw.js 中定义【英文标题】:ReferenceError: process is not defined at firebase-messaging-sw.js 【发布时间】:2021-01-15 22:27:24 【问题描述】:

需要使用 ReactJs 公用文件夹中的 firebase-messaging-sw.js 中的 .env 文件。 .env 文件位于项目根文件夹中,我需要在 firebase-messaging-sw.js 中使用它,而无需将 .env 移动到另一个位置。但是当在 firebase-messaging-sw.js 中调用环境变量时。我在 ReactJs

中收到参考错误“在 firebase-messaging-sw.js 中未定义进程”

这是我在 firebase-messaging-sw.js 中的代码。

importScripts('https://www.gstatic.com/firebasejs/7.8.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/7.8.1/firebase-messaging.js');

const config = 
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
  appId:  process.env.REACT_APP_FIREBASE_APP_ID,
;

firebase.initializeApp(config);
const messaging = firebase.messaging();

有什么办法可以解决我的问题吗?

【问题讨论】:

React JS 是前端。 process.env 对象在 Node JS 环境中提供。但是,您可以配置 Webpack 以使用 dotenv 包从 process.env 加载数据。但是当你构建 react 项目时,值将被替换为实际值,这样任何人都可以使用浏览器开发工具看到这些键。 我的 .env 文件也在 src 文件夹 (root/src) 中,那么没有办法解决这个问题。 【参考方案1】:

firebase-messaging-sw.js 在客户端执行,这就是为什么您无法访问任何process 全局变量的原因。

【讨论】:

我的 .env 文件也在 src 文件夹 (root/src) 中,那么没有办法解决这个问题。

以上是关于ReferenceError:进程未在 firebase-messaging-sw.js 中定义的主要内容,如果未能解决你的问题,请参考以下文章

ReferenceError 'model' 未在 mongoose 中定义

ReferenceError: primordials 未在 node.js 中定义

ReferenceError:数据未在exports.action中定义

ReferenceError:FlatListItemSeparator 未在 React Native 中定义

UnhandledPromiseRejectionWarning:ReferenceError:TextEncoder 未在 NextJS 12 中定义

UnhandledPromiseRejectionWarning:ReferenceError:TextEncoder 未在 NextJS 12 中定义