Запутался в работнике службы с NextJS & Express - PullRequest
0 голосов
/ 08 июня 2018

Последние два дня (буквально) я пытался заставить работника службы запустить мое приложение NextJS, которое работает в качестве сервера в качестве Express.Репозиторий, где я размещаю весь код: https://github.com/nicer00ster/nicer00ster-portfolio Я просто ищу подсказку, где я иду не так.Причина, по которой я использую Express, состоит в том, чтобы отправлять почту, и во всех примерах, использующих следующий автономный режим или любую другую конфигурацию сервера, используется плагин http.

Я работаю над этим портфолио уже около 2 месяцеви я действительно хочу, чтобы мой Lighthouse набрал очки, прежде чем я решу запустить его вживую.Любое направление будет иметь большую ценность.Спасибо!

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Наконец-то понял это, закончил тем, что бросил Express и просто обработал тело ответа для электронных писем через Node:

const { headers, method, url } = req;
let body = [];
req.on('error', (err) => {
  console.error(err);
}).on('data', (chunk) => {
  body.push(chunk);
}).on('end', () => {
  body = Buffer.concat(body).toString();
})

Затем использовал ту же функцию sendTransport для nodemailer, которую я уже использовал.Работник службы работает так же, как почта отправляется!= D

0 голосов
/ 21 июня 2018

Итак, на этой неделе я также пытался создать проект, который был «проверен маяком», скажем.

Далее есть действительно хороший каталог примеров .Конкретный пример, которому я следовал, который помог мне настроить это, был next.js / examples / with-sw-precache

Это настройка, аналогичная вашей, только с использованием SWPrecacheWebpackPlugin со стандартной настройкой

Шаг, который, по-видимому, отсутствует, что может быть проблемой, заключается в том, что вы не регистрируете своего сервисного работника.В своем индексном файле вы можете зарегистрировать работника службы в жизненном цикле componentDidMount.

import React from 'react'

export default class extends React.PureComponent {
  componentDidMount() {
    if ('serviceWorker' in navigator) {
      navigator.serviceWorker
        .register('/service-worker.js')
        .then(registration => {
          console.log('service worker registration successful')
        })
        .catch(err => {
          console.warn('service worker registration failed', err.message)
        })
    }
  }
  render() {
    return <p>Check the console for the Service Worker registration status.</p>
  }
}
0 голосов
/ 08 июня 2018

Мне не хватает представителя, чтобы оставить комментарий, но ...

Ссылки на repl.it, на которые вы ссылаетесь, являются ответами Javascript для Native Browser, которые не запускают узел, и, соответственно,выразить.Вам нужно будет использовать nodeJS repl или, если хотите, использовать наш экспресс-шаблон .

...