Как можно «определить» не определить при загрузке с помощью RequireJS?

StackOverflow https://stackoverflow.com//questions/20006262

  •  20-12-2019
  •  | 
  •  

Вопрос

Я изо всех сил пытаюсь понять, почему модуль, загруженный RequireJS, не имеет доступа к define функция.

В моем HTML:

<script data-main="/assets/js/app/main.js" src="/assets/libs/require.js/2.1.9/require.js" type="text/javascript"></script>

В main.js:

// Initialize Require.js
require.config({
   baseUrl: 'http://test.dev/cart/assets',
   paths: {
      jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
   }
});

// Main app logic
require( ['jquery', 
          'js/app/cart', 
          'js/app/wizard',
          'js/lib/colorbox', 
          'js/lib/jvfloat'], function ($, Cart, Wizard, ColorBox, jvfloat) {

    // Initialize Cart
    Cart.init();

    // Initialize Wizard
    Wizard.init();
}

);

В этом, colorbox.js загружается нормально и заворачивается так:

define(['jquery'], function ( jQuery ) {
     // ...Colorbox code here
});

Когда он пытается загрузить jvfloat.js, он выдает:

Неперехваченная ошибка ссылки:определить не определено

Несмотря на то, что он обернут точный та же оболочка, что и colorbox.

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

shim: {
   'jvfloat': {
      deps: ['require','jquery'],
      exports: 'jvfloat'
   }
}

Я также попробовал удалить define обертку и установил мою прокладку вот так, вот как документация предлагает это сделать:

shim: {
    'jvfloat': {
        deps: ['jquery'],
        exports: 'jQuery.fn.jvfloat'
    }
}

ТЛ;ДР; Что может привести к тому, что библиотека, загружаемая RequireJS, не будет иметь доступа к define функция?

Это было полезно?

Решение

Хорошо, я нашел обходной путь, используя прокладка часть конфигурации RequireJS.То, что я пробовал раньше, использовал jvfloat в качестве ключа массива, когда я должен был использовать его целиком.Итак, это работает:

require.config({
  baseUrl: 'http://test.dev/cart/assets',
  paths: {
     jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
  },
  shim: {
     'js/lib/jvfloat': {
        deps: ['jquery'],
        exports: 'jQuery.fn.jvfloat'
     }
  }
});

До сих пор понятия не имею, как использовать define для чего-то подобного, но, да ладно, это считается решением и может помочь кому-то еще в будущем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top