Получение данных из API в приложении next.js React, которое локально работает иначе, чем на AWS lambda@edge

Мне удалось успешно извлечь данные из API и использовать getServerSidePropsтак что он будет динамическим и будет меняться по мере изменения в базе данных. Все это отлично работает локально.

Моя проблема возникает после развертывания на AWS lambda@Edge, когда данные больше не извлекаются динамически, а страница полностью статична. Внесение изменений в базу данных не влияет на данные, отображаемые на странице. Текущие данные на странице - это данные, которые были в базе данных во время первого развертывания страницы, когда я использовалgetStaticProps.

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

Posts.tsx

import Head from 'next/head'
import { PostsCard} from '@cool_posts_feed/cool_posts.storybook/dist/components/PostsCard'
import { GetServerSideProps } from 'next'

export default function Home({posts}) {
  return (
    <div className="container">
      <Head>
        <title>Cool Posts</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>

      <main>
        {posts.map((posts) => (<PostsCard cardTitle= {posts.title} content={posts.content} link= "">
        </PostsCard>))}
      </main>
    </div>
  )
}

export const getServerSideProps : GetServerSideProps = async () => {
  const API = 'http://cool-posts/posts'
  const res = await fetch(API, {
                headers: {
                  'posts-creator-id': '1234asdf'
                }
              });
 
  const posts = await res.json()
 
  return{
    props: {
      posts
    }
  };
}

Yaml-файл для развертывания

stages:
- stage: develop_build_deploy_stage
  pool:
    name: Default
    demands:
      - msbuild
      - visualstudio
      
  jobs:
  - job: develop_build_deploy_job
    steps:
    - checkout: self
      clean: true
      persistCredentials: true
        
    - task: NodeTool@0
      displayName: Install Node    
      inputs:
        versionSpec: '12.x'

    - task: npmAuthenticate@0
      inputs:
        workingFile: .npmrc

    - script: |
        npm install
        npx next build    
      displayName: Install Dependencies and Build

    - task: AWSPowerShellModuleScript@1
      displayName: Deploy to Lambda@Edge
      inputs:
        awsCredentials: 'cool-posts'
        regionName: 'eu-west-1'
        scriptType: 'inline'
        inlineScript: 'npx serverless'

    - task: PowerShell@2
      displayName: 'Increment version'
      inputs:
        targetType: 'inline'
        script: |
          git checkout develop
          git pull origin develop
          git config --global user.email "build.agent@coolposts.com"
          git config --global user.name "Build Agent"
          npm version patch -m "Increment Version [skip ci]" --force
          git push

Как мне динамически получать информацию из нашей базы данных и иметь это изменение в нашей среде?

-update После дополнительных исследований и тестирования выяснилось, что проблема не в конвейере или в процессе развертывания, поскольку развертывание напрямую через vscode дало те же результаты.

0 ответов

Другие вопросы по тегам