В настоящее время я пытаюсь использовать библиотеку moment.js с require.js, и мне все еще трудно понять правильную настройку такого проекта. Вот что я делаю в файле main.js:
requirejs.config({
baseUrl: 'app',
paths: {
// ... more parameters (all Backbone related)
'moment': 'lib/moment',
'moment_de': 'lib/lang/de',
},
shim: {
'moment' : {
deps: [],
},
'moment_de': {
deps: ['moment'],
},
// ... more parameters (all Backbone related)
}
});
Я использую отдельный модуль для целей настройки. Модуль выглядит следующим образом:
define(['moment', 'moment_de'], function(moment, de) {
moment.lang('de');
var configuration = {}
// ...
return configuration;
});
Как вы можете видеть, я пытаюсь изменить глобальный язык объекта момента в этом файле, но у меня возникают следующие сообщения об ошибках:
Uncaught Error: Module name "../moment" has not been loaded yet for context: _. Use require([])
И позже:
Uncaught TypeError: Cannot call method 'preparse' of undefined
Первое сообщение об ошибке - это языковой модуль, который загружается, хотя он должен быть загружен ПОСЛЕ моменту (если я делаю это правильно). Второй - это модуль момента, который пытается переключиться на языковой модуль, который не был загружен.
Неужели кто-то может прояснить этот вопрос. Спасибо заранее.
РЕДАКТИРОВАТЬ: я исправил проблему, используя версии с ограниченным языком (например, этот). По-видимому, миниатюрные версии используют формат AMD, что позволяет легче включать в проекты require.js).
Я все еще не совсем понимаю, почему невозможно включить языки, используя конфигурацию shim. Может быть, кто-то может попытаться объяснить это.