Прежде всего, ни git, ни git - bash не имеют ничего общего с этой ошибкой. Вы просто используете git - bash в качестве оболочки для запуска своего nodejs кода сервера.
Во-вторых, фактическое сообщение об ошибке, включая трассировку стека (ошибка при любом ... в любом случае ) - это самый важный инструмент для поиска этой ошибки. Без трассировки стека сообщение об ошибке почти бессмысленно
В-третьих, эта строка трассировки стека идентифицирует ваш код, выдавший ошибку.
at Server.<anonymous> (C:\Users\adm\Desktop\Server\Unit1\simple_server\main2.js:13:11)
Вы можете распознать ваш код здесь, потому что предположительно Вы знаете, main2.js
это ваше. Это говорит о том, что ваш код в строке 13, позиция символа 11, вызвал ошибку. Эта строка кода находится в анонимной функции (функция без собственного имени). Подсчитав количество строк в main2.js
, вы можете определить, что это неправильная строка
response.write(responseMessage);
В-четвертых, теперь посмотрите на первую строку сообщения об ошибке
TypeError [ERR_INVALID_ARG_TYPE]: Первый аргумент должен иметь тип string или экземпляр Buffer. Полученный номер типа (2)
Ваша линия вызывает response.write()
с одним аргументом. Сообщение об ошибке говорит вам, что аргумент должен быть string
или каким-то другим буфером, но ваш аргумент является number
.
Итак, теперь вы знаете, что ваше значение responseMessage
необходимо изменить от числа до строки, прежде чем использовать его в response.write()
. Как вы можете изменить это? Есть много способов. Вот два возможных варианта:
Использование response.write(responseMessage.toString())
Заставить вашу функцию getGrade()
возвращать строку вместо числа.
Да, это сбивает с толку. Javascript должно создать иллюзию того, что строки и числа работают так же, как и все остальные. Но вы используете пакет http, который не дает вам этой иллюзии. этот пакет позволяет .write()
информации отправлять в ваш браузер. Ваш браузер ожидает либо текстовую строку, либо буфер, содержащий страницу для его отображения.
Совет Pro: Используйте текстовый редактор, который показывает номера строк, поэтому вам не нужно считать их.