petrovich / petrovich-js

JS library to inflect Russian first, last, and middle names.
MIT License
310 stars 17 forks source link

Не работает с node.js #2

Closed a2nt closed 9 years ago

a2nt commented 10 years ago

var petrovich = require('petrovich'); console.log(petrovich.male.first.genitive('Мурка'));

Мурки-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-и-͚͓̠̻̰̻͚̱̞͎̤̙̠͚̪̻̖̼̥и̸̘̺̩̣̥̗̬̟͍̖̯̫̖̜͕̘̮̳

thaumant commented 10 years ago

Не могу воспроизвести проблему, у меня копипаст этого кода отрабатывает нормально и печатает "Мурки".

Пара вопросов:

  1. Какая ОС и версия ноды?
  2. Что за крипи-текст в конце? Что в консоли печатается?
a2nt commented 10 years ago
  1. OSX 10.9.4
  2. node v0.10.29 весь текст скопировал из консоли
dustalov commented 10 years ago

@a2nt этот баг воспроизводится стабильно? Подобные символы в конце строки больше похожи на аппаратный сбой в памяти.

a2nt commented 10 years ago

screen shot 2014-09-05 at 7 11 32 am Странная штука, но только что попробовал создать файл в коде которого ничего нет кроме этих двух строчек: var petrovich = require('petrovich'); console.log(petrovich.male.first.genitive('Мурка'));

Всё работает отлично, а вот если вставлю этот код в тело коллбэка запроса из mongoose будет такой же косяк.

dustalov commented 10 years ago

Значит это не аппаратная проблема. Не может ли быть такого, что Mongoose ODM перегружает какие-либо методы работы со строками или чем-нибудь ещё? Я совсем не знаю JavaScript и не работал с Node.js, поэтому вопрос к вам, @a2nt и @thaumant.

a2nt commented 10 years ago

Выяснилось что проблема не в mongoose, а в библиотеке colors (https://github.com/Marak/colors.js). Повторить её можно вот так:

var colors = require('colors'),
petrovich = require('petrovich');
console.log(petrovich.male.first.genitive('Мурка'));

В браузере соответственно всё работает, а в консоли нет. console.log('Мурки'); тоже работает т.е. проблема в конфликте методов, а не в кодировке.

Как-то надо пофиксить, есть идеи?

thaumant commented 9 years ago

Причина: monkey-patching прототипа строки библиотекой colors с добавлением enumerable-свойств. Починил здесь и создал https://github.com/Marak/colors.js/issues/88