#javascript #node.js #express #fetch #router
#javascript #node.js #выразить #выборка #маршрутизатор
Вопрос:
Я использую экспресс-маршрутизатор в узле и пытаюсь отобразить страницу с некоторыми данными, которые я получаю при извлечении из API. Однако я не получаю абсолютно никаких результатов, и это не ошибка API. Я проверил консоль вручную, и она возвращает результаты, как и ожидалось.
Вот мой код:
router.get('/dashboard', ensureAuth, async (req, res) => {
try {
const resp = await fetch("https://api.tvmaze.com/shows?page=1")
const respData = await resp.json()
res.render('dashboard', {
name: req.user.firstName,
image: req.user.image,
shows: respData
})
} catch (error) {
res.render('dashboard', {
name: req.user.firstName,
image: req.user.image
})
}
})
РЕДАКТИРОВАТЬ: вот представление, которое отображается:
<body>
{{#if shows}}
{{#each shows}}
<img src="{{image.original}}" alt="{{name}}" />
<div class="movie-info">
<h3>{{name}}</h3>
<span>{{weight}}</span>
</div>
{{/each}}
{{else}}
<p>No shows available.</p>
{{/if}}
</body>
Я искал в Интернете, но не могу найти объяснение, в чем здесь проблема. Если это дубликат, пожалуйста, перенаправьте меня на оригинал. Спасибо.
Комментарии:
1. Пожалуйста, предоставьте больше информации о вашей ошибке или представлении, в котором вы не можете увидеть возвращенные данные.
2. Что вы видите, когда запускаете сервер в своем отладчике и устанавливаете точку останова
const respData = await resp.json()
?3. Я добавил редактирование @silencedogood. Я не получаю никаких ошибок, он просто показывает абзац «Недоступно».
4.
No shows available
вероятно, это означает, что было создано исключение и ответ был отправлен изcatch
блока. Пожалуйста, войдитеerror
или прочитайте это в своем отладчике. Вы можете установить точку останова в первой строкеcatch
блока.5. Невероятно глупая ошибка от меня. fetch API не реализован в node. Извините, что потратил ваше время, но спасибо за вашу помощь. Регистрация ошибки дала мне всю необходимую информацию. @jabaa
Ответ №1:
Вы не можете использовать fetch
внутренний узел, потому что он доступен только в браузере. Если вы хотите сделать HTTP-запрос из приложения узла, используйте axios или node-fetch