Следующий JS + Contentful => getEntries запрос в getInitialProps прерывает производственную сборку - PullRequest
2 голосов
/ 14 января 2020

Стек : Далее JS, Содержимое + Сейчас

Обзор : Вызван запрос содержимого getEntries () в функции getInitialProps asyn c. В локальной среде все работает отлично, я получаю сообщения, а затем успешно передаю их в качестве реквизитов на страницу, где я могу их отобразить.

Проблема : Когда я пытаюсь выполнить развертывание с помощью Now, я получаю эту ошибку:

Ошибка: ресурс не найден. в notFoundError (/zeit/31b54c53/node_modules/contentful/dist/contentful.node.js:7731:19) в /zeit/31b54c53/node_modules/contentful/dist/contentful.node.js:7854:13 в processTicksAndRejected (внутренний / process / task_queues. js: 93: 5) в asyn c Function.module.exports.HB77.Post.getInitialProps (/zeit/31b54c53/.next/serverless/pages/p/[id].js : 1198: 15) в asyn c loadGetInitialProps (/zeit/31b54c53/.next/serverless/pages/p/[id].js:3451:17) {sys: {type: 'Error', id: 'NotFound'}, подробности: {type: 'Entry', id: 'undefined', environment: 'master', space: undefined}} Произошла ошибка при отображении страницы "/ p / [id]" https://err.sh/zeit/next.js/prerender-error: ошибка: не удалось отобразить страницу без сервера в Object._default [по умолчанию] (/zeit/31b54c53/node_modules/next/dist/export/worker.js:12:212) в processTicksAndRejected (внутренняя / process / task_queues) . js: 93: 5)

Код :

const Post = props => {
  ...
}

Post.getInitialProps = async function({ query }) {

  const contentfulClient = contentful.createClient({
    accessToken: `${process.env.ACCESS_TOKEN}`,
    space: `${process.env.SPACE}`
  });

  const res = await contentfulClient.getEntry(`${query.id}`);

  return {
    post: res
  };
};

export default Post;

Ответы [ 2 ]

2 голосов
/ 14 января 2020

похоже, что вашим ENV может не хватать:

details: { type: 'Entry', id: 'undefined', environment: 'master', space: undefined } 

process.env.space равно undefined

0 голосов
/ 16 января 2020

Я сохранил свои секреты в .env, .env.build, а также добавил их в секреты Now через их CLI. Чтобы раскрыть секреты производственной сборки, я создал файл next.config. js, в котором я создал экспорт модулей следующим образом:


    module.exports = {
      env: {
        SPACE: process.env.SPACE,
      }
    };

Моя проблема заключалась в том, что я случайно добавил next.config . js файл для gitignore, из-за которого секреты env возвращались как неопределенные. ?

...