Я запускаю свое приложение nextjs через AWS Amplify, и у меня есть переменная среды, которая возвращает undefined с вызовом в моем приложении node.
Я определил переменную среды из показанной здесь консоли Amplify:
Переменная STRAPI представляет собой строку из 256 символов, которая, согласно документации , которую я нашел, должна быть в порядке.
Вот код, который использует переменные среды:
import qs from "qs";
/**
* Get full Strapi URL from path
* @param {string} path Path of the URL
* @returns {string} Full Strapi URL
*/
export function getStrapiURL(path = "") {
return `${
process.env.NEXT_PUBLIC_STRAPI_API_URL || "http://localhost:1337"
}${path}`;
}
/**
* Helper to make GET requests to Strapi API endpoints
* @param {string} path Path of the API route
* @param {Object} urlParamsObject URL params object, will be stringified
* @param {Object} options Options passed to fetch
* @returns Parsed API call response
*/
export async function fetchAPI(path, urlParamsObject = {}, options = {}) {
// Merge default and user options
const token = process.env.STRAPI;
console.info("Token in process.env:");
console.info(process.env.STRAPI);
console.info("Token in token var:");
console.info(token);
const mergedOptions = {
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
...options,
};
// Build request URL
const queryString = qs.stringify(urlParamsObject);
const requestUrl = `${getStrapiURL(
`/api${path}${queryString ? `?${queryString}` : ""}`
)}`;
console.info("Request url:");
console.info(requestUrl);
// Trigger API call
const response = await fetch(requestUrl, mergedOptions);
// Handle response
if (!response.ok) {
console.error(response.statusText);
throw new Error(`An error occurred please try again`);
}
const data = await response.json();
return data;
}
Этот код был взят из другого проекта, указанного его первоначальным автором.
NEXT_PUBLIC_STRAPI_API_URL работает нормально, это просто переменная среды STRAPI, которая не определена.
Примечание: я полностью осознаю, что вам не следует регистрировать токены, и я на 100 % планирую повторно сгенерировать токен, как только проблема будет решена.
Вот журналы из CloudWatch, и, как вы можете видеть, NEXT_PUBLIC_STRAPI_API_URL работает нормально.
Я не уверен, что проблема здесь, но я пробовал следующее:
Не уверен, какие следующие шаги предпринять здесь.
Проблема в том, что NextJS требовалось, чтобы переменная среды имела префикс NEXT_PUBLIC_, чтобы быть доступной приложению. Это было введено примерно в NextJS 9. Прошло некоторое время с тех пор, как я использовал NextJS.