【发布时间】:2020-11-10 08:02:50
【问题描述】:
我正在尝试将我的 ReactJs 应用程序连接到 firebase 以实现推送通知。每次我尝试控制台记录我从 firebase 获得的令牌时,总是会出现这个错误,我不知道如何解决它。这是错误的屏幕截图:
我在我的公共文件中的 firebase-messaging-sw.js 中添加了以下几行:
importScripts('https://www.gstatic.com/firebasejs/7.16.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/7.16.1/firebase-analytics.js');
importScripts('https://www.gstatic.com/firebasejs/7.16.1/firebase-messaging.js');
firebase.initializeApp({
messagingSenderId: "msg_id",
})
const initMessaging = firebase.messaging()
还有文件 firebase.js 及其内容,我从已经注册的 firebase 项目中获取配置对象内的数据:
import firebase from "firebase";
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./public/firebase-messaging-sw.js')
.then(function (registration) {
console.log('Registration successful, scope is:', registration.scope);
}).catch(function (err) {
console.log('Service worker registration failed, error:', err);
});
}
const firebaseConfig = {
apiKey: "AIzaSyAQO5KFxbUnjmoggCRdAkk7wcKXjewRDnU",
authDomain: "saas-a6939.firebaseapp.com",
databaseURL: "https://saas-a6939.firebaseio.com",
projectId: "saas-a6939",
storageBucket: "saas-a6939.appspot.com",
messagingSenderId: "1061462994754",
appId: "1:1061462994754:web:3ef0dcc11942e042cda2db",
measurementId: "G-6T9DCBJNME"
};
firebase.initializeApp(firebaseConfig);
export default firebase;
这是我尝试打印令牌的 useEffect :
useEffect(() => {
const messaging = firebase.messaging();
messaging.requestPermission().then(() => {
return messaging.getToken()
}).then(token => {
console.log("TOKEN :", token)
})
}, [])
这也是我的 index.js 文件:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import 'bootstrap/dist/css/bootstrap.min.css';
import { Provider } from 'react-redux';
import { store } from './Components/loginPage/Helpers';
const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
serviceWorker.unregister();
我尝试了许多修复,但没有任何效果,但我仍然遇到同样的错误。我希望任何人都可以帮助我。提前致谢。
【问题讨论】:
-
请不要张贴文字内容的截图,例如错误信息。而是发布实际文本,并使用 Stack Overflow 的格式化工具对其进行标记。这也将使您有机会搜索错误消息,因为这个问题以前曾出现过 - 并且几乎总是有相同的解决方案:找出为什么
/sw....jsURL 提供错误的内容(它在你的情况),并解决这个问题。 -
@FrankvanPuffelen 感谢您的反馈。我将在接下来的帖子中尝试这样做。我怎么知道为什么我的 firebase-messaging-sw.js url 提供了错误的内容以及如何修复它!请给我一个提示。
标签: reactjs firebase firebase-cloud-messaging