Я получаю ошибку ниже, и вращающиеся колеса выясняют ее. Это происходит только во время моей сборки действий на github. Когда я запускаю сборку локально, она работает нормально, и я могу обратиться к обработчику маршрута. Я также могу запустить действие GitHub локально, используя act и Docker, и тогда я тоже получаю ошибку.
Вот ошибка:
TypeError [ERR_INVALID_URL]: Invalid URL
at new NodeError (node:internal/errors:405:5)
at new URL (node:internal/url:676:13)
at new ni (/home/runner/work/frontend/.next/server/app/api/reports/route.js:6:40210)
И рассматриваемый файл src/app/api/reports/route.tsx
:
export async function GET(request: Request) {
const { searchParams } = new URL(request.url); // <- here is the problem
const id = searchParams.get('id');
const partitionKey = searchParams.get('partitionKey');
if (!id || !partitionKey) {
return NextResponse.json({msg: 'Success'});
}
Я ожидаю, что сборка завершится, и я смогу нажать:
http://localhost:3000/api/reports?id=SOME_ID&partitionKey=SOME_KEY
И получить результат. Фактическим результатом является ошибка, указанная выше, во время сборки (даже не во время выполнения).
Когда я запускаю его локально, указанный выше URL-адрес работает.
Я перепробовал массу, в том числе:
route-bad.tsx
, и сборка прошла успешно.qs
. Я все еще получаю ошибку.Любая помощь приветствуется!
Вам необходимо правильно указать URL-адрес, начиная с разных способов: URL://www www.skaj.dom http://www и т. д.
В этом случае вашего ответа только часть после слова «новый». Например, вместо добавления цитаты и т. д. Весь URL-адрес Для Google.com вместо URL-адреса. Измените гиперссылку на всю новую часть вместо URL-адреса «URL:(www» на www. Вы на полпути, я уже вижу, что ${req - хороший путь
В общем, вы получили ошибку «неверный URL».
Я ценю ответ, но не думаю, что дело в формате URL. Эта часть отлично работает во время выполнения. Я выясняю, почему React вообще запускает этот код во время сборки. Вот тут и ломается и что-то не правильно настраивается. Эта статья дает мне несколько хороших идей: github.com/vercel/next.js/discussions/35534
Я понял это. Это обсуждение помогло мне указать правильное направление: https://github.com/vercel/next.js/discussions/35534
Оказывается, это был всего лишь отвлекающий маневр:
const { searchParams } = new URL(request.url); // <- here is the problem
Настоящая проблема здесь:
const cosmosClient = new CosmosClient({
endpoint: COSMOS_ENDPOINT,
key: COSMOS_KEY,
});
export async function GET(request: Request) {
...
}
Две проблемы происходили одновременно:
CosmosClient
вне вызова функции, а это означало, что импорт этого файла приводил к выполнению этого бита. Вот почему ошибка произошла во время компиляции. Я перенес инициализацию в функцию.После исправления этих двух ошибка исчезает. Сложный вопрос, но я определенно лучше понимаю компиляцию React.
Вы имеете в виду здесь:
new URL(request.url)
? Что-то вроде:new URL(`https://${request.url}`)
но с множеством таких опций?