我目前正在尝试将 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
第一条错误消息是正在加载的语言模块,尽管它应该在 moment 模块之后加载(如果我做得对的话)。第二个是从试图切换到尚未加载的语言模块的那一刻模块。
有人可以对这个问题有所了解。提前致谢。
编辑:我使用缩小的语言版本(例如这个)解决了这个问题。显然,缩小版本使用的是 AMD 格式,这样可以更容易地包含在 require.js 项目中)。
不过,我仍然不太明白为什么不能使用 shim 配置包含语言。也许有人可以试着解释一下。