Я новичок в программировании и пытаюсь загрузить расширение cytoscape-context-menu . Я следовал инструкциям на GitHub и попробовал этот test.js
код:
require(['cytoscape.js', 'cytoscape-context-menus.js', 'jquery.js'], function( cytoscape, contextMenus, jquery ){
console.log(contextMenus);
contextMenus( cytoscape, jquery ); // register extension
});
Мой index.html
выглядит так:
<script src="require.js"></script>
<script src="test.js"></script>
Я скачал последние версии всех файлов .js
и поместил их в тот же каталог, что и index.html
. Однако во время отладки в Chrome ContextMenus
остается undefined
, и я получаю этот тип ошибки:
test.js:3 Uncaught TypeError: contextMenus is not a function
at test.js:3
at Object.execCb (require.js:1696)
at Module.check (require.js:883)
at Module.<anonymous> (require.js:1139)
at require.js:134
at require.js:1189
at each (require.js:59)
at Module.emit (require.js:1188)
at Module.check (require.js:938)
at Module.enable (require.js:1176)
(anonymous) @ test.js:3
execCb @ require.js:1696
check @ require.js:883
(anonymous) @ require.js:1139
(anonymous) @ require.js:134
(anonymous) @ require.js:1189
each @ require.js:59
emit @ require.js:1188
check @ require.js:938
enable @ require.js:1176
init @ require.js:788
callGetModule @ require.js:1203
completeLoad @ require.js:1590
onScriptLoad @ require.js:1717
load (async)
req.load @ require.js:1942
load @ require.js:1685
load @ require.js:834
fetch @ require.js:824
check @ require.js:856
enable @ require.js:1176
enable @ require.js:1557
(anonymous) @ require.js:1161
(anonymous) @ require.js:134
each @ require.js:59
enable @ require.js:1113
init @ require.js:788
(anonymous) @ require.js:1460
setTimeout (async)
req.nextTick @ require.js:1815
localRequire @ require.js:1449
requirejs @ require.js:1797
(anonymous) @ test.js:1
Я уже пробовал другие расширения от iVis-at-Bilkent, такие как cytoscape-popper
, cytoscape-cose-bilkent
точно таким же образом, и все это работало. Я просмотрел проблемный cytoscape-context-menus.js
и увидел, что он имеет такую структуру:
;(function(){ 'use strict';
var $ = typeof jQuery === typeof undefined ? null : jQuery;
var register = function( cytoscape, $ ){
'' a lot of Code here ''
}
if( typeof module !== 'undefined' && module.exports ){ // expose as a commonjs module
module.exports = register;
}
if( typeof define !== 'undefined' && define.amd ){ // expose as an amd/requirejs module
define('cytoscape-context-menus', function(){
return register;
});
}
if( typeof cytoscape !== 'undefined' && $ ){ // expose to global cytoscape (i.e. window.cytoscape)
register( cytoscape, $ );
}
})();
Он полностью отличался от других расширений, например cytoscape-popper.js
начинается с этого:
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("popper.js"));
else if(typeof define === 'function' && define.amd)
define(["popper.js"], factory);
else if(typeof exports === 'object')
exports["cytoscapePopper"] = factory(require("popper.js"));
else
root["cytoscapePopper"] = factory(root["Popper"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_8__) {
... A lot of code here
Моя идея заключалась в том, что это как-то связано с различной реализацией для экспозиции модуля, однако мои нынешние знания не позволяют мне это исправить. Извините за длинный текст, но любые предложения будут высоко оценены, поскольку я придерживался этого в течение нескольких дней.