requireJS работал для одного плагина, но не для другого

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

Я пытаюсь получить этот подключаемый модуль работает, но консоль Chrome выдает эту ошибку:

Uncaught ReferenceError: jQuery is not defined :3000/js/libs/textarea_auto_expand.js:41

Мой код таков:

require.config({
    paths: {
      jquery: '/js/libs/jquery/jquery-2.0.3',
     underscore: '/js/libs/underscore/underscore-min',
     backbone: '/js/libs/backbone/backbone-min',
  //text: '/js/libs/text'
 templates: '../templates'
 ,sockets: '/socket.io/socket.io' 
 ,rangyInputs: '/js/libs/rangyinputs-jquery-1.1.2'
 , textareaAutoExpand: 'js/libs/textarea_auto_expand'

},
shim: {
  'Backbone': ['Underscore', 'jQuery'],
  'sockets': {exports: 'io'}, 
  'rangyinputs-jquery': {deps: ['jquery'], exports: '$'}, 
  'textarea_auto_expand': {deps: ['jquery'], exports: '$'}

} 
});

  require(['jquery', 'router', 'libs/a_myLib/keydownHandler', 'libs/textarea_auto_expand' ], 
function($, router, keydownHandler, ta_ae){
$("body").on("keydown", "textarea", keydownHandler);
router.initialize();
$("textarea").textareaAutoExpand();
})

person curtissv    schedule 05.01.2014    source источник


Ответы (1)


Проблема в том, что вы использовали имя пути jquery, но указали jQuery в своих отладках Backbones:

'Backbone': ['Underscore', 'jQuery'],

Опять же, вот рабочий пример main.js

index.html

<!doctype html>
<html>
    <head></head>
    <body>
        <script data-main="main" src="require.js"></script>
    </body>
</html>

main.js

require.config({
    paths : {
        jquery : 'jquery-2.0.3',
        'rangyinputs-jquery' : 'rangyinputs-jquery-1.1.2',
        textareaAutoExpand: 'js/libs/textarea_auto_expand'
    },
    shim : {
        'rangyinputs-jquery' : {deps : ['jquery'], exports : '$'},
        'textarea_auto_expand': {deps: ['jquery'], exports: '$'}
    }
});


require(['jquery', 'rangyinputs-jquery', 'textarea_auto_expand'], function($) {
    console.log('Type of $.fn.textareaAutoExpand ' + typeof $.fn.textareaAutoExpand );
    var t = $('<textarea/>').textareaAutoExpand();
    $('body').append(t);
});
person Andrew Shustariov    schedule 05.01.2014
comment
Спасибо! Это избавляет от ошибки консоли, но текстовые области на самом деле не расширяются. - person curtissv; 05.01.2014
comment
Обновленный пример. В этом случае они расширяются. - person Andrew Shustariov; 06.01.2014
comment
Это не работает для меня. Я подумал, что это может быть из-за того, что текстовые области, которые я использовал, добавлялись динамически, поэтому я попытался добавить их напрямую в HTML. Неудачно. Я думаю, что просто переключусь на использование браузера, так как это действительно небольшой проект, который не должен быть слишком производительным. - person curtissv; 06.01.2014