Luka Asatiani
Ну смотри, в js действия связанные с загрузкой даных являются асинхронными из за этого если в js обьявить переменнюй и передать ей значение html тега и попытаться использовать его, выдаёт null так как асинхронный процес загрузки не закончен, обычно в js я решал эту проблему с помошью defer или функцией onload но в nodejs проблемы.
Чего?
То что ты сейчас описал происходит не из-за того, что не закончен какой-то там асинхронный процесс.
Браузер обрабатывает хтмл-страницу построчно, синхронно, строка за строкой, если не указаны специальные атрибуты. Подгружает скрипты, стили и парсит хтмл-разметку, создавая DOM. И если скрипт, работающий с DOM, подключен в начале страницы, браузер выполнит его тут же, независимо от того существует ли еще DOM или нет, и только после обработки скрипта продолжит парсинг страницы дальше.
Поэтому всегда рекомендуется подключать скрипты в конце страницы, перед закрывающим тегом боди. Когда браузер дойдет до этого места и начнет выполнять скрипт, модель DOM уже будет создана, поэтому никаких defer и onload не потребуется