У меня действительно серьезный вопрос о Vercel (NextJS), на который я не нашел ответа.
Я пытаюсь развернуть проект на Versel и использую некоторые структуры для получения данных из API, например:
export async function getStaticProps(context) {
const route = process.env.APIpath + 'api/category/getCategories'; //focusing here, ok on localhost
const res = await fetch(route)
const json = await res.json()
return {
props: {
data: json,
},
};
}
Поскольку fetch
использует только абсолютный URL-путь, мне нужно определить базовый URL-адрес с переменной process.env.APIpath
.
При локальном тестировании у меня process.env.APIpath = 'http://localhost:3000/'
но: мне нужно определить производственную переменную для развертывания Vercel, и я использую бессерверные функции.
Некоторая информация о Vercel, согласно этой документации, мы действительно можем fetch
данные . Но в процессе развертывания у меня всегда возникают ошибки на страницах, куда я звоню fetch
, например:
//this code triggers an error as code shown above, ok on localhost
const res = await fetch(process.env.APIpath + 'api/category/getCategory?_id='+ pid, {
method: 'post',
body: JSON.stringify(values, null, 2)
})
Я получаю ошибки из-за fetch
. Конечно, я понимаю, что во время развертывания Vercel не может собрать производственную версию, поскольку я использую жестко запрограммированный process.env.APIpath
.
Как я могу четко определить process.env.APIpath
(или любые другие встроенные переменные) для развертывания проекта? Обратите внимание, что каждый раз, когда Versel генерирует общую ссылку на проект как nextjs-fhp5exsvo-testing.vercel.app
.
P.S. Буду рад любой помощи, проблема с развертыванием уже около 5 дней.
getStaticProps
. Вместо этого напрямую импортируйте логику, используемую внутри вашего маршрута API: Внутренний API получить с помощью getServerSideProps? (Next.js) (упоминаетсяgetServerSideProps
, но то же самое относится и кgetStaticProps
). - person juliomalves   schedule 08.06.2021