Vercel에서 React 및 NodeJS로 SuperToken을 배포하는 방법

이 자습서에서는 React 및 NodeJS 애플리케이션에 SuperTokens 인증을 추가하고 Vercel에 배포하는 방법을 배웁니다.

시작하기




SuperTokens를 시작하려면 Recipe Guides page을 방문하여 애플리케이션에 원하는 로그인 방법을 선택하십시오. 가이드를 선택한 후 빠른 설정 섹션 또는 선택한 프레임워크와의 통합을 위한 섹션 중 하나를 따릅니다.

통합 방법email password + social login with express and react에 대한 블로그 게시물도 있습니다.

Vercel 배포를 위한 애플리케이션 재구성




로컬 시스템에서 기본 구현을 완료한 후 Vercel에 배포할 수 있도록 다음을 수행하여 애플리케이션을 변환하려고 합니다.
  • api 폴더를 만듭니다. 이 폴더에는 Vercel에 배포할 수 있는 API 논리가 포함됩니다. 이 폴더에 있는 index.js 파일을 통해 API의 진입점을 노출할 것입니다.
  • index.js를 열고 아래와 같이 파일 끝에서 내보내기app
    module.exports = app;
    


  • Note: We are deploying our backend as a standalone express app, and not with /pages/api serverless functions that Vercel provides. If you want to deploy using /pages/api, then you can check out our nextJS framework integration guide that's within the recipe guide.



    Vercel 배포가 작동하도록 appInfo 구성 변경




    Vercel에 대한 프로덕션 및 검사 사이트에서 프로젝트를 실행하려면 websiteDomainappDomain가 Vercel에서 생성된 URL을 가리키도록 해야 합니다. 프로덕션 URL은 앱에 대해 항상 동일하지만 검사 URL은 계속 변경됩니다. 이 동적 조건에서 작동하려면 apiDomainwebsiteDomain 값을 동적으로 설정해야 합니다.

    백엔드에서




    appInfo = {
        appName: "My App",
        apiDomain: process.env.VERCEL_URL,
        websiteDomain: process.env.VERCEL_URL,
        apiBasePath: "/api/auth",
        websiteBasePath: "/auth",
    },
    


    Vercel은 검사 URL/생산 URL(로드된 사이트에 따라 다름)과 동일한 백엔드에 환경 변수process.env.VERCEL_URL를 제공합니다. 따라서 이를 사용하여 apiDomainwebsiteDomain 값을 동적으로 설정합니다.

    프론트엔드에서


    window.location.origin를 사용하여 현재 로드된 URL을 가져오고 이를 apiDomainwebsiteDomain로 설정할 수 있습니다. 이렇게 하면 검사 URL이 계속 변경되더라도 여전히 현재 도메인을 가리킵니다.

    appInfo = {
        appName: "TodoApp",
        apiDomain: window.location.origin,
        websiteDomain: window.location.origin,
        apiBasePath: "/api/auth",
        websiteBasePath: "/auth",      
    },
    


    This only works if the frontend and backend of your application have the same domain. If your backend is hosted elsewhere and you use Vercel only for the frontend, be sure to change the apiDomain on the frontend and backend to point to your backend server. In this case however, your app may not function properly for inspect deployments since your backend server has no way of knowing what the inspect URL of the frontend site would be on each deployment.



    CORS 미들웨어 업데이트




    또한 CORS 미들웨어 원본을 VERCEL_URL 환경 변수로 업데이트해야 합니다.

    app.use(
        cors({
            origin: process.env.VERCEL_URL,
            allowedHeaders: ['content-type', ...SuperTokens.getAllCORSHeaders()],credentials: true,
        })
    );
    


    Vercel 구성 및 배포




    애플리케이션 코드의 백엔드 및 프런트엔드가 업데이트된 상태에서 애플리케이션의 루트 디렉터리에 vercel.json 파일을 생성하여 Vercel에 모든 트래픽을 /api/* 경로의 고속 백엔드 서버로 푸시하도록 지시합니다.

    {
        "rewrites": [{ "source": "/api/(.*)", "destination": "/api" }]
    }
    


    마지막으로 Vercel에 앱을 배포하려면 프로젝트의 루트에서 vercel 명령을 실행해야 합니다.

    vercel
    


    배포되면 검사 URL 및 프로덕션 URL에서 로그인 기능을 테스트할 수 있어야 합니다.

    데모 앱




    또한 express 및 React를 통한 이메일 비밀번호 로그인이 있고 Vercel과 함께 작동하도록 구성된 a demo app on our GitHub도 있습니다. live preview도 볼 수 있습니다.

    SuperTokens의 Folks가 작성했습니다. 즐거운 시간 되셨기를 바랍니다! 우리는 Discord 서버에서 항상 사용할 수 있습니다. 질문이 있거나 도움이 필요하면 저희와 함께하십시오.

    좋은 웹페이지 즐겨찾기