>

익스프레스를 서버로 실행하는 NextJS 애플리케이션에서 서비스 워커를 실행시키기 위해 지난 이틀 (문자 적으로)을 보냈습니다. 모든 코드를 호스팅하는 저장소는 https://github.com/nicer00ster/nicer00ster-portfolio입니다. 나는 내가 잘못 가고있는 것에 대한 힌트를 찾고 있습니다. Express를 사용하는 이유는 메일을 보내는 것이므로 다음 오프라인 또는 다른 서버 구성을 사용하는 모든 예제는 http 플러그인을 사용합니다.

이제 약 2 개월 동안이 포트폴리오를 연구 해 왔으며 실제로 발표하기 전에 등대 점수를 받고 싶습니다. 모든 방향은 큰 가치가 있습니다. 감사합니다!


  • 답변 # 1

    마지막으로 이것을 알아 내고 ditching 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();
    })
    
    
    그런 다음 이미 사용했던 것과 동일한 nodemailer sendTransport 기능을 사용했습니다. 서비스 직원은 물론 메일도 발송합니다! = D

  • 답변 # 2

    의견을 남길 충분한 담당자가 없지만 ...

    연결된 repl.it 링크는 기본 브라우저 자바 스크립트 repls이며 노드를 실행하지 않으며 확장하여 표현합니다. nodeJS repl을 사용하거나 원하는 경우 Express 템플릿을 사용해야합니다.

  • 답변 # 3

    이번 주에는"lighthouse 검증 된"프로젝트를 설정하려고했습니다.

    다음으로 예제 디렉토리가 정말 좋습니다. 내가 설정 한 데 도움이 된 특정 예는 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>
      }
    }
    
    

관련 자료

  • 이전 로드 밸런서에서 SSL을 위해 Phoenix Elixir에서 HTTP에서 HTTP로 트래픽을 리디렉션하는 방법은 무엇입니까?
  • 다음 python - pytest 정착물 전달 값