2017-02-21 6 views
0

Я очень новичок в Meteor. Я делаю простое приложение. Вот проблема у меня есть:Метеор: Непринятый RangeError: Максимальный размер стека вызовов

Template.newFeedForm.events({ 
 
    'submit #new-feed-form'(event) { 
 
     event.preventDefault(); 
 

 
     const target = event.target; 
 
     const text = target.text; 
 

 
     Meteor.call('feeds.insert', text); 
 

 
     target.text.value = ''; 
 
    } 
 
});

Так что я шаблон newFeedForm и в моем feeds.js меня

Meteor.methods({ 
 
    'feeds.insert'(text){ 
 
     check(text, String); 
 
     //check(hashtag, String); 
 

 
     // Make sure the user is logged in before inserting a task 
 
     if (! this.userId) { 
 
      throw new Meteor.Error('not-authorized'); 
 
     } 
 
     console.log(this.userId); 
 

 
     // Feeds.insert({ 
 
     //  text: text, 
 
     //  owner: this.userId, 
 
     //  username: Meteor.users.findOne(this.userId).username, 
 
     //  createdAt: new Date() 
 
     // }); 
 
    } 
 
});

Я закомментирована Feeds.insert здесь думает, что это вызывает проблему. Кажется, что-то другое. Когда Meteor.call исполняется я получил это:

Uncaught RangeError: Maximum call stack size exceeded 
 
    at Function._.(anonymous function) [as isArguments] (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:1068:30) 
 
    at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:512:25) 
 
    at http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:531:22 
 
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:157:22) 
 
    at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:530:5) 
 
    at http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:531:22 
 
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:157:22) 
 
    at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:530:5) 
 
    at http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:531:22 
 
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:157:22)

понятия не имеют, что происходит. Вот мой репо, который воспроизводит эту ошибку: https://github.com/yerassyl/nurate-meteor

+0

Вы импортируете что-то неправильно? Как указано, ваш код не должен бросать эту ошибку. Вы запускаете его через отладчик? – chazsolo

+0

подтвердили, что вы вводите обработчик отправки только один раз? – zim

ответ

1

Как правило, когда ошибки, как это происходит (особенно при работе с методом Метеор) это означает, что вы, вероятно, не передавая «правильные» данные (или данные, которые вам думал, что вы были).

Посмотрев на код обработки формы, я заметил, что вы никогда не получаете текстовые данные textarea.

const text = target.text; 

target.text возвращает фактический объект DOM textarea, но то, что вы действительно после этого, - это значение, которое содержит объект. Следующий код решит вашу проблему.

const text = target.text.value;