Как исправить зависимости datatable кнопок в require js? - PullRequest
0 голосов
/ 22 января 2019

Я использую requirejs и datatables с кнопками для экспорта отчетов в формате pdf и csv. Я получаю случайные ошибки на странице, особенно в IE11, например: 'невозможно установить свойство pdfMake of undefined' ИЛИ 'DataTable.Buttons не определено' Это происходит случайным образом, и если я обновлю страницу, ошибки просто исчезнут. Я думаю, что это из-за проблем с зависимостями, которые я не могу исправить. Кто-нибудь еще сталкивался с этой проблемой?

Я пытался установить зависимость в require js 'shim', но безуспешно.

(function (window, requirejs) {
  'use strict';
  requirejs.config({
    waitSeconds: 20,
    baseUrl: window.appConfig.scriptsPath,
    paths: {
      hbs:['handlebars.min'],
      infobox:['infobox'],
      lo:['lodash.min'],
      daterange:['daterangepicker'],
      tabs:['tab.min'],
      sel2:['select2.min'],
      scrollbar: ['vendors/jquery.scrollbar.min'],
      dataTables: ['jquery.dataTables.min'],
      //DataTables core
      'datatables-cdn' : 'https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min',
      'datatables-cdn-buttons' : 'https://cdn.datatables.net/buttons/1.5.2/js/dataTables.buttons.min',
      //Extra modules
      'datatables-cdn-buttons-flash' : 'https://cdn.datatables.net/buttons/1.5.2/js/buttons.flash.min',
      'datatables-cdn-jszip' : "https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min",
      'datatables-cdn-pdfmake' : "https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min",
      'datatables-cdn-vfsfont' : "https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts",
      'datatables-cdn-button-html5' : "https://cdn.datatables.net/buttons/1.5.2/js/buttons.html5.min",
      gCharts:['loader'],
      ChartsJs:['Chart.bundle.min'],
      ChartsJsLabel:['Chart.PieceLabel.min'],
      amcharts:['amcharts/amcharts.min'],
      amchartsSerial:['amcharts/serial.min'],
      amchartsGauge:['amcharts/gauge.min'],
      amchartsExport:['amcharts/export/export.min'],
      jsPdf: ['jspdf'],
      html2canvas: ['html2canvas'],
      h2canvas: ['vendors/html2canvas'],
      canvasPlugin:['jquery.plugin.html2canvas'],
      canv:['canvg.min'],
      async: 'async'
    },
    shim: {
      'app.core.min': {
        deps: ['jquery']
      },
      ChartsJsLabel:{
        deps: ['ChartsJs']
      },
      autotable:{
        deps: ['jsPdf']
      },
      amchartsGauge:{
        deps: ['amcharts']
      },
      amchartsSerial:{
        deps: ['amcharts']
      },
      amchartsExport:{
          deps: ['amcharts']
      },
      daterange:{
        deps: ['jquery']
      },
      tabs:{
        deps: ['jquery']
      },
      jsPdf:{
        deps: ['jquery', 'html2canvas']
      },
      html2canvas:{
        deps: ['canvasPlugin']
      },
      infobox:{
        deps: ['async!https://maps.googleapis.com/maps/api/js?v=weekly&key=AIzaSyDX-6ZAspxTrtZknORO335Ist8cGKze4tI&callback=false']
      }
    },
    urlArgs: window.appConfig.assetHash
  });
  // Load the main app module to start the app
  requirejs(['jquery', 'app.core.min', 'lo'], function ($, app, _) {
    app();
    // disable jQuery Ajax call caching
    $.ajaxSetup({
      cache: false
    });
  });
}(window, requirejs));
var OWCS = {};

// это мой файл JavaScript

(function (define, window) {
  define(['./helpers', 'datatables-cdn', 'datatables-cdn-buttons' , 'datatables-cdn-buttons-flash', 'datatables-cdn-jszip', 'datatables-cdn-pdfmake', 'datatables-cdn-vfsfont', 'datatables-cdn-button-html5'],
function (helper) {
    'use strict';
      // my code ajax calls and datatable initialization
  });
}(define, window));

Отлично работает на chrome и firefox, однако в IE он выдает ошибку javascript, как указано выше.

...