stuck using requireJS to load a mixture of non-AMD and AMD modules that depend on each other

i used the media player video.js in an elgg plugin back in v.1.8 and now that i am upgrading it to v.2.1 compatibility i am rewriting the JS and supporting files that load the player. this has meant loading my own JS as an AMD module, plus changing the way that the video.js script is loaded and also 2 plugins for video.js that i am using. unfortunately, the two plugins are not written in AMD format and, in fact, every one of the modules is written in a different way... producing some confusion in me!

i have read through numerous forums, some documentation for elgg and requireJS and github issues for video.js and i still haven't found a way to get this to work reliably. my current approach has been to stop calling the two plugins (for testing purposes) and to just call videojs - but even then i get the result that often on the first page load after making a change, videojs appears to load correctly, but after that every other load produces a browser error:

15:15:38.322 TypeError: videojs is undefined
<anonymous> player.js:10
n.Callbacks/i() elgg.js:2
n.Callbacks/j.add() elgg.js:2
n.fn.ready() elgg.js:2
<anonymous> player.js:7
newContext/context.execCb() elgg.js:1868
newContext/Module.prototype.check() elgg.js:1056
newContext/Module.prototype.enable/</<() elgg.js:1311
bind/<() elgg.js:309
newContext/Module.prototype.emit/<() elgg.js:1361
each() elgg.js:234
newContext/Module.prototype.emit() elgg.js:1360
newContext/Module.prototype.check() elgg.js:1111
newContext/Module.prototype.enable() elgg.js:1348
newContext/Module.prototype.init() elgg.js:961
callGetModule() elgg.js:1375
newContext/context.completeLoad() elgg.js:1783
newContext/context.onScriptLoad() elgg.js:1889
ScriptSurrogate._errorListener() ScriptSurrogate.js:200
1 player.js:10:6

i have used elgg_require_js to include the video.js file in it's location in the file structure as a view. i have also attempted using elgg_define_js in the start.php file, but that made no difference.

someone else did complain of similar in videojs's github issues list several months ago, but they said it had since been fixed in newer versions.

i gather from all the documentation i have read that i shouldn't be using elgg_define_js for AMD compatible code, which is fine - but what can i do to debug this issue? the video.js script is massive!

anyone?