我试图从 firebase/messaging 获取令牌以在通知中使用,但收到“messaging/unsupported-browser”错误(FirebaseError:Messaging:此浏览器不支持使用 Firebase SDK 所需的 API。)。我见过有人在 localhost 上运行它,并且在 stackoverflow 上看到过答案说你可以通过 HTTPS 运行它,但也可以在 localhost 上运行它。但如何呢?
import { initializeApp, getApps, getApp } from "firebase/app";
import { getMessaging, getToken } from "firebase/messaging";
const firebaseConfig = {
apiKey: process.env.FIREBASE_APIKEY,
authDomain: process.env.FIREBASE_AUTHDOMAIN,
projectId: process.env.FIREBASE_PROJECTID,
storageBucket: process.env.FIREBASE_STORAGEBUCKET,
messagingSenderId: process.env.FIREBASE_MESSAGINGSENDERID,
appId: process.env.FIREBASE_APPID,
measurementId: process.env.FIREBASE_MEASUREMENTID,
};
const app = !getApps().length ? initializeApp(firebaseConfig) : getApp();
const messaging = getMessaging(app);
export const generateToken = async () => {
const token = await getToken(messaging);
console.log(token);
};
我尝试将端口更改为 80,但没有任何变化(正如我预期的那样)。我正在使用 nextjs^14.1.0 和 firebase^10.11.0.
所以,如果这确实是一个 https 错误,那么你可以使用类似 ngrok 的东西为你的本地环境创建一个 https url,这是我想说的最简单的方法,否则你需要在本地安装证书。
查看文档,如果有任何问题请告诉我。