Ну тут уж только вы сами сможете отдебажить свой код.
Это ошибка говорит о том, что заголовки уже были отправлены и вы не можете еще раз в догонку отправить ответ.
То есть, где-то что-то отправляется раньше, чем вы отправляете ответ. Что это - смотрите свой код.
Рекомендую сейчас поотключать вообще все, кроме Экспресса, метода menu и вывода ответа. Когда поймете, что все в порядке и ответ работает - подключайте остальное и смотрите как оно работает/не работает.
Еще раз - ошибка не в res.send. Это ваше приложение. App.js, 254 строка. Что там у вас - знаете только вы.
И оставьте в покое async, он тут сейчас не нужен. Не надо все валить в одну кучу.
Владимир, я не понял — что именно у вас не работает?
1. Вы делаете запрос на сервер.
2. Сервер вам отдает результат в виде строки json.
3. На клиенте вы получаете ответ, приводите обратно к объектному виду эту строку и делаете что нужно.
Владимир, Потратьте хотя бы 10 минут на ютубе на видео node js api. Это простая тема и вы быстро все поймете. Тут в комментариях расписывать это нет смысла.
Вам нужно учить матчасть, а не делать проекты сейчас.
Есть обычный AJAX-запрос, который вернет JSON с вашим контентом.
Гуглите чистый ajax на JS или берите любую либу типа axios.
Сокеты нужны, чтобы держать постоянное подключение к серверу. Нужно для чатов, например. Для обычной работы по api - запрос>ответ - это не нужно.
Ну а return из цикла - это что-то совсем за гранью. Попробуйте для начала вынести return io.emit('menu',menu) на одну скобку ниже. Вы пытаетесь сделать return из цикла for(const row of result). Return бывает только в функциях. Надеюсь, это просто ваша невнимательность.
learn.javascript.ru - вот чем нужно ближайшие пару недель заниматься.
ince, а он не нужен. Консолькой все намного проще.
Digitalocean -> tutorials.
Там отличные туториалы по первоначальному сетапу Убунту и стэка lamp/node. Через час у вас будет свой сервер с запущенным приложением.
Алексей Сегодин, да. Запуск сервера и его пересборка в релоаде — огромная разница. Он и не отключается, по-сути, просто заменяет в кэшэ измененный файл.
kuzubina, ну да. Вы же можете заранее создать массив и пушить туда массивы из цикла. Но проще, конечно, в самом цикле делать вычисления и уже их пушить.
Сложно обсуждать, не видя код, но, кажется, задача очень простая.
В смысле? У вас или объект не инициализирован, либо у него метода такого нет, либо вы тупо в синтаксисе ошиблись. Консольте, дебажте, за вас это не должны делать.
Decadal, в ноде нет хорошо или плохо. Есть апи и ваше желание взаимодействовать с файлами, протоколами или модулями js. Нет паттернов, нет алгоритмов. Нода — не язык, просто среда исполнения.
Это ошибка говорит о том, что заголовки уже были отправлены и вы не можете еще раз в догонку отправить ответ.
То есть, где-то что-то отправляется раньше, чем вы отправляете ответ. Что это - смотрите свой код.
Рекомендую сейчас поотключать вообще все, кроме Экспресса, метода menu и вывода ответа. Когда поймете, что все в порядке и ответ работает - подключайте остальное и смотрите как оно работает/не работает.
Еще раз - ошибка не в res.send. Это ваше приложение. App.js, 254 строка. Что там у вас - знаете только вы.
И оставьте в покое async, он тут сейчас не нужен. Не надо все валить в одну кучу.