【问题标题】:ReferenceError: process is not defined at firebase-messaging-sw.jsReferenceError:进程未在 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) 中,那么没有办法解决这个问题。

标签: javascript reactjs firebase firebase-cloud-messaging


【解决方案1】:

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

【讨论】:

  • 我的 .env 文件也在 src 文件夹 (root/src) 中,那么没有办法解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 2023-03-07
  • 2022-11-22
  • 2020-01-27
  • 1970-01-01
  • 2017-07-16
相关资源
最近更新 更多