2016-10-12 3 views
0

Метеор говорит, что вы можете просто установить узловые модули через meteor npm i selection-menu --save, и они просто будут работать. Однако, когда я пытаюсь использовать SelectionMenu через new SelectionMenu({...}), это дает мне ошибку.Метеор и меню выбора

selection-menu.js:20 Uncaught TypeError: Cannot set property 'SelectionMenu' of undefined 

Код в вопросе из библиотеки, которая бросает ошибку выглядит следующим образом:

(function (root, factory) { 
 
    if (typeof define === 'function' && define.amd) { 
 
     define(factory); 
 
    } else { 
 
     root.SelectionMenu = factory(); // this is where it fails 
 
    } 
 
}(this, function() { 
 
    //something here 
 
    
 
});

Я полагаю, что это о коде загрузчика, который библиотека обеспечивает и вероятно, не ладит с Метером? Что я могу здесь сделать, я в замешательстве.

Мой код:

import SelectionMenu from 'selection-menu'; 
    new SelectionMenu({ 
     container: document.getElementById("#document"), 
     content: '<a href="#test">test</a>', 
     handler: function(e) { 
      console.log("i selected something"); 
     } 
    }) 

EDIT Я только что создал клон библиотеки в моем каталоге и загружать его оттуда. Это работает, но не идеально. Если вы придумаете больше идей, сообщите мне.

+0

Вы импортирован пакет в файл? 'import SelectionMenu из 'selection-menu''? –

+0

@MaxG. одна и та же часть библиотеки терпит неудачу, если я это сделаю – Yorrd

+0

@MaxG. также см. добавленный код – Yorrd

ответ

0

Он сообщает вам Cannot set property 'SelectionMenu' of undefined. Так что что-то не так с тем, как вы пытаетесь использовать библиотеку.

Нужно инициализировать вещи, когда соответствующий компонент/шаблон отображает, если вы еще этого не сделали.

В блеске (попробуйте этот, он может работать.):

import SelectionMenu from 'selection-menu'; 

Template.templateName.onRendered(function() { 
    new SelectionMenu({ 
     container: document.getElementById("#document"), 
     content: '<a href="#test">test</a>', 
     handler: function(e) { 
      console.log("i selected something"); 
     } 
    }) 
}); 
+0

спасибо за ваш ответ. Ошибка не в моем коде, а в библиотеке. Часть, которую я показал, - это первые строки из файла .js библиотеки. https://github.com/iDoRecall/selection-menu/tree/gh-pages/src – Yorrd

+0

@Yorrd Вы просто поместили это в свой код, как в свой вопрос, или вы инициализировали onRendered(), как и следовало? Я не думаю, что это вызвано библиотекой. – Luna

+0

Я использую синтез (полимер), а не пламя, но я положил его в функцию Polymer ready(), которая примерно эквивалентна. Тем не менее, ошибка появляется при импорте библиотеки уже до ее достижения. – Yorrd

Смежные вопросы