Skip to main content
Question

Kendo AMD not loading, trying to convert to global


I am trying to load Kendo into Quick Base. I understand that Kendo is loaded as an AMD module. Unfortunately, it is not working with my custom application that I'm trying to load through the Rich Text Field. Are there any suggestions for how to convert Kendo to a global module? Is that even necessary? Thank you!
This topic has been closed for replies.

I understand what you are trying to do but without a CDN URL to the Kendo library I can only guess what version or components you are using.

You basically have two options:

(1) Try to load Kendo as an AMD library using QuickBase's requirejs implementation:

Here is the requirejs code to load D3 used in an old forum answer:

require.config({
  paths: {
    "d3": "https://cdnjs.cloudflare.com/ajax/libs/d3/4.9.1/d3";
  }
});
require(['d3'], function(d3) {
  console.dir(d3);
});

https://community.quickbase.com/quickbase/topics/how-do-you-reference-a-js-library-in-a-code-page#re...

(2) Modify the Kendo library to prohibit it from loading as an AMD module. At the bottom of the Kendo library there will be code similar to this:

  ...
  }(jQuery), window.kendo
}, "function" == typeof define && define.amd ? define : function(e, t) {
  t()
});


You need to knock out the logic that tests for define.amd. This is a tricky task to edit it correctly as the original code is minified, nested and uses constructs that are difficult for humans to read. I think this it the correct modification but I did not test it:

  ...
  }(jQuery), window.kendo
}, function(e, t) {
  t()
});


I just noticed there was a small typo in the requirejs code (errant semicolon) I posted. Here is a version of that code that clears the typo and loads d3 and kendo-ui-core using requirejs and then logs the d3 and kendo objects along with all the requirejs loaded modules:

require.config({
  paths: {
    "d3": "https://cdnjs.cloudflare.com/ajax/libs/d3/4.9.1/d3",
    "kendo": "https://cdnjs.cloudflare.com/ajax/libs/kendo-ui-core/2014.1.416/js/kendo.core.min"
  }
});
require(['d3', 'kendo'], function(d3, kendo) {
  console.dir(d3);
  console.dir(kendo);
  console.dir(requirejs.s.contexts._.config );
});