У данной проблемы есть следующие решения:
- Отключить режим Quick edit в окне Properties терминала (см. скриншот ниже)
- Использовать другой терминал (например, git bash)
- Запускать nodejs через Task Scheduler операционной системы.
Блог посвящен технологической платформе Гедымин (Gedemin), предназначенной для быстрой разработки экономических приложений. Платформа создана компанией Golden Software of Belarus, Ltd и имеет открытый исходный код.
У данной проблемы есть следующие решения:
Ровно в следующий четверг, 27 января, нам исполняется 28 лет! Традиционный боулинг, как обычно, в 19:00 в клубе Мэдисон. В ЧЕТВЕРГ! Будем рады видеть всех наших сотрудников! Как действующих, так и бывших.
🎳
Пришлось потратить пару дней в поисках трудновыявимой ошибки. Все дело в том, что finally работает в Delphi и NodeJS по-разному. Будьте осторожны.
Например, в Делфи, код в секции finally выполнится ПЕРЕД окончанием выполнения функции:
В Javascript, код в секции finally (даже не смотря на наличие await) выполнится уже ПОСЛЕ того как результат функции будет передан получателю.
Теперь представим такую ситуацию. На веб сервер посылается сначала запрос на изменение данных, а после его выполнения запрос на получение (перечитывание) данных. Если мы будем делать commit транзакции в секции finally, то возможна такая ситуация, когда первый запрос уже завершится и вернет результат на клиента, который, в свою очередь, выполнит второй запрос к серверу, а транзакция все еще будет не подтверждена. В этом случае клиент получит старые данные, не соответствующие тому, что находится в базе данных.
Выход в данном случае или комитить транзакцию до секции finally, или использовать мьютекс на несколько обработчиков, который не даст прочитать данные, пока не запишется транзакция, которая меняла эти данные.