Enhancement
Major
Detail
Major
Detail
RequireJS is a library that allows to load javascript files or modules dynamically. That is, it is used to load files not directly when a web page is opened, but only when they are needed. To make this functionality available to other developers, the variable (de facto a function) require is defined and initialized globally, usually at the window object.
The ACE code editor has a more tailored and streamlined way to load Javascript files or modules compared to the one from RequireJS. Unfortunately, the ACE editor exports its require functionality in the "normal" variant in the same global variant as RequireJS.
Neither the ACE code editor nor RequireJS will override an existing require variable.
Thus, for an application that has dependencies on ACE and RequireJS, the order in which the corresponding scripts are loaded or executed determines which require variant is used. The ACE code editor module currently has no dependency on RequireJS, so no particular order is guaranteed.
If the code editor script(ace.js) is loaded before RequireJS(require.js), the user receives the error message {{#!js Uncaught TypeError: require.config is not a function }} in the developer console of the browser used.
Implementation
The developers of the ACE code editor offer a conflict-free variant of their editor. Unlike the "normal" variant, the conflict-free variant uses the namespace "ace" when exporting its functionality for loading files and modules. That means, instead of for example window.require the variant of the ACE editor is then under window.ace.require.
In this case you should update to the latest ACE version.
Test
In ext-id-c9-ace.config.xml e.g. by {{#!xml <file config:position="begin" resource="ace/ace.js" /> }} specify that the ACE editor is loaded "first" (at least before require.js). Start Graph Demo and check that no errors are visible in the developer console after login.