Closed a2nt closed 9 years ago
Не могу воспроизвести проблему, у меня копипаст этого кода отрабатывает нормально и печатает "Мурки".
Пара вопросов:
@a2nt этот баг воспроизводится стабильно? Подобные символы в конце строки больше похожи на аппаратный сбой в памяти.
Странная штука, но только что попробовал создать файл в коде которого ничего нет кроме этих двух строчек: var petrovich = require('petrovich'); console.log(petrovich.male.first.genitive('Мурка'));
Всё работает отлично, а вот если вставлю этот код в тело коллбэка запроса из mongoose будет такой же косяк.
Значит это не аппаратная проблема. Не может ли быть такого, что Mongoose ODM перегружает какие-либо методы работы со строками или чем-нибудь ещё? Я совсем не знаю JavaScript и не работал с Node.js, поэтому вопрос к вам, @a2nt и @thaumant.
Выяснилось что проблема не в mongoose, а в библиотеке colors (https://github.com/Marak/colors.js). Повторить её можно вот так:
var colors = require('colors'),
petrovich = require('petrovich');
console.log(petrovich.male.first.genitive('Мурка'));
В браузере соответственно всё работает, а в консоли нет.
console.log('Мурки');
тоже работает т.е. проблема в конфликте методов, а не в кодировке.
Как-то надо пофиксить, есть идеи?
Причина: monkey-patching прототипа строки библиотекой colors с добавлением enumerable-свойств. Починил здесь и создал https://github.com/Marak/colors.js/issues/88
var petrovich = require('petrovich'); console.log(petrovich.male.first.genitive('Мурка'));
Мурки-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-͚͓̠̻̰̻͚̱̞͎̤̙̠͚̪̻̖̼̥и̸̘̺̩̣̥̗̬̟͍̖̯̫̖̜͕̘̮̳