Регистрация не удалась - манифест пуст или отсутствует в приложении экспресс / узла - PullRequest
0 голосов
/ 26 октября 2018

Я довольно новичок в выражении / узле, поэтому я пытался создать приложение 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> 
...