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

时间:2017-09-25 06:59:47

标签: requirejs chart.js momentjs

我使用RequireJS包含Moment.jsChart.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

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

请注意Chart.js包不适合我,因为我也需要单独使用Moment.js。

1 个答案:

答案 0 :(得分:2)

我已经在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) {
   ...
})