2013-10-25 5 views
0

Я не могу использовать requirejs с whenjs, он дает 404 ошибки о недостающих файлах при запуске сайта. Я следую инструкциям в whenjs README:Использование whenjs с requirejs

Во-первых, я запускаю git submodule add https://github.com/cujojs/when, когда в корневом каталоге проекта.

Тогда я "Настройка загрузчика с пакетом" в app/public/js/main.js:

requirejs.config({ 
    baseUrl: "js", 
    packages: [ 
    { 
     name: "when", 
     path: "../../../when", 
     main: "when" 
    } 
    ] 
}); 

Это оставляет следующую структуру каталогов:

project-root/ 
    app/ 
    public/ 
     js/ 
     main.js 
     helpers/ 
      myhelper.js 
    when/ 

файл (myhelper.js), который требует whenjs имеет:

define(['when'], function(When) { 

Это вызывает ошибку

GET http://localhost:4580/js/when/when.js 404 (Not Found)

Я пытался копировать JS файлы из project-root/when в app/public/js/libs/when

и используя следующий код:

//main.js 
requirejs.config({ 
    baseUrl: "js", 
    packages: [ 
    { 
     name: "when", 
     path: "libs/when", 
     main: "when" 
    } 
    ] 
}); 

//myhelper.js 
define(['when'], function(When) { 

производит ту же ошибку:

GET http://localhost:4580/js/when/when.js 404 (Not Found)

Похоже, что все, что находится в myhelper.js, игнорирует объявление packages. Я не уверен, есть ли что-то еще, что я должен там делать? Инструкции whenjs не говорят.

Я попытался это:

//main.js 
requirejs.config({ 
    baseUrl: "js", 
    packages: [ 
    { 
     name: "when", 
     path: "libs/when", 
     main: "when" 
    } 
    ], 
    paths: { 
    w: "./libs/when" 
    } 
}); 

//myhelper.js 
define(['w/when'], function(When) { 

Это не производит и ошибок - хотя я не пробовал использовать библиотеку с ней еще ...

Версия Requirejs является v2.1.8, и Я читал the API instructions regarding packages but I'm none the wiser. Что это значит, что инструкции whenjs здесь не работают? Я также пробовал другие комбинации настроек, например, сочетая опции paths и packages, но безрезультатно.

Это не проект только для узла или javascript, поэтому резкое перемещение каталогов не является вариантом.

Любая помощь очень ценится.

+0

У меня нет на самом деле не знаю, почему я получил вниз проголосовать за это. Пожалуйста, не забудьте добавить комментарий с правом голоса - все дело в том, чтобы поощрять * лучше * вопросы, поэтому дайте подсказку о том, что нужно изменить! – iain

ответ

0

Попробуйте использовать paths свойство requirejs.config: Если поставить when.js под js/libs/when/when.js, вы можете попробовать:

requirejs.config({ 
     paths: { 
      'when': 'libs/when/when' 
     } 
    }); 
define(['when'], function(When) {... 

Вам не нужно даже в baseUrl, если тег JavaScript содержит его, но вы можете укажите это, если хотите.

Это должно решить проблему загрузки библиотеки, но если это произойдет.JS не поддерживает AMD, вы можете добавить shim конфигурации:

shim: { 
    'when': { 
     exports: 'When' 
    } 
} 
+0

Спасибо, очень ценится. Я довольно уверен, что когда я должен поддерживать AMD, поскольку это в их инструкциях, вот почему я нахожу это странным: / – iain

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