Я довольно новичок в выражении / узле, поэтому я пытался создать приложение push-уведомлений, однако получаю странную ошибку, которую не могу исправить, я попытался зарегистрировать все заново, но безрезультатно, если кто-то могПосмотри, я был бы благодарен.Ошибка говорит следующее:
DOMException: Registration failed - missing applicationServerKey, and manifest empty or missing
Я уже зарегистрировал открытые / закрытые ключи в своем коде.Вот мой файл package.json
{
"name": "node-push",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.18.3",
"express": "^4.16.4",
"web-push": "^3.3.3"
}
}
ошибка в моем файле client.js, код которого я поместил ниже, но я не нахожу там никаких ошибок.в том же каталоге у меня есть файл index.js
//set up required modules for the app
const express = require('express');
const webPush = require('web-push');
const bodyParser = require('body-parser');
const path = require('path');
//initialize app with express
const app = express();
//set static path
app.use(express.static(path.join(__dirname, 'client')))
app.use(bodyParser.json());
//put public/private keys in variables
const publicVapidKey = 'BJ_dkKEYaXOwFqu8fLdU8_SBmqCXDzKs5zp0Um6ThRfZK8OBK4T2ZtCDCTBhM7w3XSv_PDjbyBxil0oo1phxUms';
const privateVapidKey = 'hbLvZnSFM08RUsNZRD4T8hqbUBnoPen2JWiwd8q4QH8';
//set vapid key adresses etc
webPush.setVapidDetails('mailto:test@test.com', publicVapidKey, privateVapidKey);
// Subscribe route
app.post('/subscribe', (req,res) => {
// get push subscription object
const subscription = req.body;
// send back a status, 201(resource created succesfull)
res.status(201).json({});
// create the payload
const payload = JSON.stringify({ title: 'Push Test'});
//pass the object into the send notification function
webPush.sendNotification(subscription, payload).catch(err => console.error(err));
});
const port = 5000;
app.listen(port, () => console.log(`Server started on port ${port}`))
, тогда у меня есть файл клиента, в котором находятся следующие файлы =>
client.js
//set up required modules for the app
const express = require('express');
const webPush = require('web-push');
const bodyParser = require('body-parser');
const path = require('path');
//initialize app with express
const app = express();
//set static path
app.use(express.static(path.join(__dirname, 'client')))
app.use(bodyParser.json());
//put public/private keys in variables
const publicVapidKey = 'BJ_dkKEYaXOwFqu8fLdU8_SBmqCXDzKs5zp0Um6ThRfZK8OBK4T2ZtCDCTBhM7w3XSv_PDjbyBxil0oo1phxUms';
const privateVapidKey = 'hbLvZnSFM08RUsNZRD4T8hqbUBnoPen2JWiwd8q4QH8';
//set vapid key adresses etc
webPush.setVapidDetails('mailto:test@test.com', publicVapidKey, privateVapidKey);
// Subscribe route
app.post('/subscribe', (req,res) => {
// get push subscription object
const subscription = req.body;
// send back a status, 201(resource created succesfull)
res.status(201).json({});
// create the payload
const payload = JSON.stringify({ title: 'Push Test'});
//pass the object into the send notification function
webPush.sendNotification(subscription, payload).catch(err => console.error(err));
});
const port = 5000;
app.listen(port, () => console.log(`Server started on port ${port}`))
затем worker.js
console.log('Service worker loaded...');
self.addEventListener('push', e => {
const data = e.data.json();
console.log('Push recieved');
self.registration.showNotification(data.title, {
body: 'Notified by Bidtrans',
icon: 'https://bidtrans.eu/wp-content/uploads/2018/09/transport_marfa_logistica.png'
});
});
и, наконец, index.html (что не имеет значения)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title> Push Notification with Node </title>
</head>
<body>
<h1> Push Notifications using Node</h1>
<script src="client.js"> </script>
</body>
</html>