Контекст выполнения не перемещается из getStaticPaths в getStaticProps, как это обычно происходит

#reactjs #next.js

Вопрос:

Я пытаюсь извлечь данные из динамического маршрута. Я нахожусь на страницах/наука и техника/[поле].js и я использую getStaticPath с getStaticProps, как обычно, но по какой-то причине getStaticProps никогда не выполняются, и компонент никогда не отображается. ВЫПОЛНЯЕТСЯ только getStaticPath, и там все работает нормально, а затем просто останавливается.

 export const getStaticPaths = async () => {
       const results = await fetch('randomapi');
       const fields = await results.json();
       const paths = fields.map(field => ( { params: { field: field.name } } ) );
       console.log(paths) // EVERYTHING IS FINE HERE
       return { paths, fallback: false }
   }

export const getStaticProps = async ({params}) => {

    // NOTHING IN HERE GETS CALLED

    console.log('context: ', context)
    console.log('yo')
    const res = await fetch(`http://localhost:8080/api/v1/fields/computer-science`)
    const field = await res.json()
    console.log('field: ', field)
    return { props: {field: field} }

  
}

const Details = ({ field }) => {
    // NOTHING IN HERE GETS CALLED
    // render component blabla
}
export default Details;
 

И в итоге получается 404 страница. Я буквально понятия не имею, что происходит, потому что я без проблем делаю то же самое в других файлах. Нашел 0 человек в Интернете с той же проблемой.

Вопрос в основном в том, почему контекст выполнения не переходит от getStaticPaths к getStaticProps, как это обычно происходит?

Комментарии:

1. В консоли терминала ничего нет, сервер просто продолжает работать, и ни один из журналов консоли в getStaticProps не выполняется. В веб-консоли я получаю следующее: GET localhost:3000/наука и техника/информатика 404 (Не найден). «информатика» должна быть динамически создаваемой страницей

2. Ошибка, которую я сделал с сообщением, заключалась в том, что я подумал, что было бы хорошей идеей сделать «общий» путь, путь на самом деле-страницы/наука и техника/[поле].js, и я изменяю это в сообщении сейчас

3. Когда вы входите paths в консоль, есть computer-science ли там? Все ли ожидаемые пути генерируются там?

4. Наконец-то понял это, field.name было установлено значение «Информатика», а не «информатика»… Огромное спасибо

Ответ №1:

Возвращаемые параметры paths должны соответствовать вашему динамическому пути маршрута: pages/posts/[name] . Вам нужно заменить field на name .

 const paths = fields.map(field => ( { params: { name: field.name } } ) );
 

Кроме того, убедитесь, что все ожидаемые пути правильно сгенерированы в вашем paths массиве, в том числе computer-science .

Комментарии:

1. Теперь изменил сообщение, у меня уже есть [поле] в пути, а не [имя], так что проблема не в этом. Извините за плохой пост

2. Обновил свой ответ, чтобы отразить то, что обсуждалось в комментариях.