RequireJS не находит модули в веб-баннерах

Я разрабатываю веб-приложение, используя Maven, Spring Boot, WebJars и RequireJS. У меня проблема с тем, что RequireJS не находит некоторые модули JavaScript. Я успешно настроил Spring Boot и RequireJS, и 7 из 9 модулей загружаются правильно, два из которых не загружаются: crossroads и requirejs-i18n.

Я включил обе веб-банки в свой pom следующим образом:

    <dependency>
        <groupId>org.webjars.bower</groupId>
        <artifactId>requirejs-i18n</artifactId>
        <version>2.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>crossroads.js</artifactId>
        <version>0.12.0-1</version>
    </dependency>

В своих собственных модулях я пытаюсь загрузить crossroads и requirejs-i18n в качестве таких зависимостей:

define(['jquery',
    'signals',
    'Hasher',
    'crossroads'], function ($, signals, hasher, crossroads) {...

В этом примере jquery, signal и Hasher загружаются, а crossroads — нет, и я вижу это в консоли браузера:

Loading failed for the <script> with source http://localhost:8080/js/crossroads.js.js

Когда я пытаюсь загрузить requirejs-i18n, я вижу это:

Loading failed for the <script> with source http://localhost:8080/js/requirejs-i18n.js

Другие модули загружаются нормально, например:

GET http://localhost:8080/webjars/Hasher/1.2.0/hasher.js

Есть идеи?

Мне удалось решить проблему с перекрестком, изменив зависимость maven от

<dependency>
   <groupId>org.webjars</groupId>
   <artifactId>crossroads.js</artifactId>
   <version>0.12.0-1</version>
</dependency>

to

<dependency>
   <groupId>org.webjars.npm</groupId>
   <artifactId>crossroads</artifactId>
   <version>0.12.2</version>
</dependency>

requirejs-i18n по-прежнему не загружается, я пытался использовать его следующим образом:

define(['i18n!nls/messages'], function(messages){

и это

define(['requirejs-i18n!nls/messages'], function(messages){

person SME    schedule 05.01.2018    source источник
comment
Мне удалось успешно загрузить перекрестки, изменив зависимость от maven, но requirejs-i18n не загружается   -  person SME    schedule 05.01.2018


Ответы (2)


Итак, я исправил эту проблему, сделав это;

require.config({
   paths: {
      'i18n' : '/webjars/requirejs-i18n/i18n',
   }
});

Но я не уверен, что это правильное решение

person SME    schedule 05.01.2018
comment
Обычно конфигурация requirejs может быть сгенерирована автоматически. Используете ли вы эту часть webjars-locator javadoccentral .herokuapp.com/org.webjars/webjars-locator/0.32-1/ - person James Ward; 05.01.2018
comment
Привет Джеймс, я использую webjars-locator, но только метод getSetupJavaScript. В org.webjars.RequireJS есть и другие методы, которые могут помочь. Я попробую разобраться. Спасибо за ответ. - person SME; 08.01.2018
comment
В сгенерированной конфигурации RequireJS вы видите конфигурацию для i18n? - person James Ward; 08.01.2018
comment
Привет, Джеймс, в конфигурации RequireJS есть версия webjars.version для i18n, но нет оператора requirejs.config для i18n. - person SME; 10.01.2018
comment
Я думаю, что requirejs.config динамически генерируется из webjars.version. Так что, кажется, это должно было сработать. Не могли бы вы сообщить об ошибке: github.com/webjars/webjars-locator/issues - person James Ward; 11.01.2018
comment
Привет, Джеймс, я только что создал ошибку. Спасибо за вашу помощь. - person SME; 12.01.2018

Вы также можете сделать это:

require.config({
    paths: {
        "i18n": webjars.path("requirejs-i18n", "i18n")
    }
});
person SME    schedule 05.01.2018