如何解决无法使用脚本 (localhost:3000 firebase-messaging-sw.js)
我在 reactjs 中创建了一个聊天应用程序,我需要在我的应用程序中执行推送通知服务..我遇到了这种类型的错误
Uncaught (in promise) TypeError: Failed to register a ServiceWorker for scope ('https://6bd3f14892f0.ngrok.io/') with script ('https://6bd3f14892f0.ngrok.io/firebase-messaging-sw .js'):ServiceWorker 脚本评估失败 src/chatroom.js
令牌生成错误 FirebaseError: Messaging: 我们无法注册默认的 Service Worker。无法使用脚本 ('https://6bd3f14892f0.ngrok.io/firebase-messaging-sw. js'): ServiceWorker 脚本评估失败 (messaging/Failed-service-worker-registration)。
const fetchData = async () => {
setNickname(localStorage.getItem('nickname'));
setRoomname(room);
firebase.database().ref('roomusers/').orderByChild('roomname').equalTo(roomname).on('value',(resp2) => {
setUsers([]);
const roomusers = snapshottoArray(resp2);
setUsers(roomusers.filter(x => x.status === 'online'));
});
//push notifications
const messaging = firebase.messaging();
if('serviceWorker' in navigator) {
navigator.serviceWorker.register('../firebase-messaging-sw.js')
.then(function(registration) {
console.log("Service Worker Registered");
messaging.useServiceWorker(registration);
});
}
messaging.requestPermission()
.then(function(){
console.log('have permission')
return messaging.getToken()
}).then(function(token){
console.log("permisssion to take messaging token",token)
firebase.database().ref('fcmTokens')
.child(currentUserKey)
.set({
token_id:token,})
})
.catch(function(err){
console.log('Token generate err',err)
})
};
fetchData();
},[room,roomname]);
src/chatroom.js 发送消息方法
const submitMessage = (e) => {
e.preventDefault();
const chat = newchat;
chat.userId = currentUserKey
chat.roomname = roomname;
chat.nickname = nickname;
chat.reciverSeen= seen;
// chat.message = message;
chat.date = Moment(new Date()).format('DD/MM/YYYY HH:mm:ss');
chat.type = 'message';
const newMessage = firebase.database().ref('chats/').push(chat,function(error){
if (error) alert(error)
else{
console.log('chat',chat)
//message notification against chatroom name
firebase.database().ref('fcmTokens').child(friend_id).once('value').then(function(data){
console.log('data by fcmTokens',data)
fetch(url,{
method: 'POST',headers: {
'Content-Type': 'application/json','Authorization': 'key=BKSCGHa6iDpVnw4wPV8P1TFTY3w5QsVD48_1B57B91OChWmur7W9xcM402xuuuyVUGhTHpRAGjtXx1DdeQfpuzs' // 'Authorization': 'key=AAAAEaqdjJo:APA91bGZwboF7P9dX3XSmoOXUKQHMslGryM8pkwPJEdffmjIYpikaxzoDAEHVOEvv5mPxTCdOG6ohrW7YSB2Kpi2XoAaHr8EJNf2SbNr_3ST1nzv9pfT95lmsnMcGHF9gThbM8a7bICk'
},body: JSON.stringify({
'to': data.val().token_id,// 'data': {'message': newMessage}//.substring(0,30)}
})
})
.then(res => {
res.json()
console.log('res Success:',res);
})
.then(data => {
console.log('Success:',data);
})
.catch((error) => {
console.error('Error:',error);
});
})
}
}
);
newMessage.set(chat);
setSeen(true)
//setMessage()
setNewchat({ roomname: '',nickname: '',message: '',date: '',type: '',reciverSeen:false});
};
它导致服务工作者错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。