当我想创建具有时间尺度的图表时,如何正确包含带有RequireJS的Moment.js和Chart.js?

问题描述:

我使用RequireJS来包含Moment.jsChart.js以创建具有时标的图表。当我想创建具有时间尺度的图表时,如何正确包含带有RequireJS的Moment.js和Chart.js?

我在https://codepen.io/adrianhurt/pen/dXRRoL找到一个例子来包含它们,但它似乎并不是正确的方法。

require.config({ 
    paths: { 
    jquery: 'https://code.jquery.com/jquery-2.2.4.min', 
    moment: 'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment', 
    chartjs: 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.6/Chart' 
    }, 
    shim: { 
    jquery: { 
     exports: '$' 
    }, 
    chartjs: { 
     deps: [ 'moment' ] 
    } 
    } 
}); 

require(['jquery', 'moment', 'chartjs'], function($ ,moment, Chart) ... 

当我创建一个图表例外Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com将被抛出。

因此,我的问题是,当我想创建具有时间尺度的图表时,如何正确包含带有RequireJS的Moment.js和Chart.js?

请注意Chart.js包不是我的替代品,因为我还需要单独使用Moment.js。

+0

您是否找到过解决方案? –

+0

@ɢʀᴜɴᴛ:找到了解决办法。 – Daniel

我在https://github.com/chartjs/Chart.js/issues/4987有解决方案。

requirejs.config({ 
    paths: { 
    'moment': '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment', 
    'chartjs': '//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart' 
    } 
}) 

define('moment-adapter', ['moment'], function(moment) { 
    window.moment = moment; 
    return moment; 
}) 

require(['moment-adapter', 'chartjs'], function(moment, Chart) { 
    ... 
})