我正在使用最新的可乐尝试最新的cytoscape,我收到以下错误:
未捕获的TypeError:cola.adaptor不是函数
用于cytoscape.js代码段:
var adaptor = layout.adaptor = cola.adaptor({
trigger: function( e ){ // on sim event
switch( e.type ){
case 'tick':
if( options.animate ){
API改变了Cola吗?
答案 0 :(得分:2)
尝试按the docs建议(React / Browserify / ES6 / npm)时仍然出现此错误:
import cytoscape from 'cytoscape';
import cycola from 'cytoscape-cola';
import cola from 'webcola';
cycola(cytoscape, cola);
但是,在看到this issue并在我的索引文件的<head>
中加入cola
v3 script后,我才能使其正常工作。
最后,我必须这样做:
cycola(cytoscape, window.cola); // since cola now lives in window
答案 1 :(得分:1)
可乐现在拥有良好的npm和版本支持,因此如果您遇到问题,可以轻松尝试不同版本的可乐。
我还向Cola提出了拉取请求,因此他们在Typescript中有一个专用的父类,通用适配器。 PR已经合并 - 所以它应该得到很好的支持。 (Cola中的前一个适配器是一个JS,它显然不适合TS中的经典继承模型。)
-
旧答案:
Cola还没有支持语义版本控制,它在包管理器中不受支持。对Cola的更新会定期破坏API的兼容性,并且在未来的主要版本发布之前,不能为Cola的更新版本重写Cytoscape.js方面。
如果您想保证兼容性,请在下载ZIP for Cytoscape.js中使用附带的Cola版本。
你可能还想向Cola提出一个问题,因为在这种情况下肯定会出现问题而Cytoscape.js无法修复:https://github.com/tgdwyer/WebCola/issues
答案 2 :(得分:-1)
如果您使用webpack进行构建应用程序,则可以导入:
import cola from 'exports?cola!webcola/WebCola/cola';
这对我有用:)