我正在使用require.js将cola.js异步加载到Chrome浏览器中。我在本地托管了cola.v3.min.js,并在我的require.config块中引用了它。浏览器找到正常的模块,加载状态为200的模块,我可以在浏览器中检查cola.v3.min.js内容。但在函数的作用域中,cola出现了未定义的情况。Require似乎并没有抛出错误--只是将cola作为undefined传递。D3加载正常,并且工作正常。查看cola.js源代码,它似乎解决了AMD加载问题,而'cola‘似乎是正确的定义。为什么不喝可乐?谢谢。
define('geotbl', ['jquery','underscore','backbone','cola','d3'],
function($, _, Backbone, cola, d3){
tbl.force = cola.d3adaptor() //<-- cola is undefined here
.linkDistance(320)
.etc;
})发布于 2015-11-13 22:24:37
我发现requirejs有时似乎会加载这个可乐模块,但并不总是如此。最终,我在require.js入口点的配置部分添加了一个填充程序,使其正常工作:
require.config({
paths: {
'cola': '/vendor/colajs/cola.min',
},
shim: {
'cola':{ exports: 'cola'},
'underscore': { exports: '_' },
}, etc.发布于 2016-12-20 06:30:32
我试过垫片,但它似乎不起作用。因此,我使用了以下新石器时代的方法:
define(['jquery','underscore','backbone','cola','d3',],
function($, _, Backbone,d3,cola,tpl_dendro){
this.g_cola = cola; // cola is loaded here, so save in global context
var myView = Backbone.View.extend({ // create the local context
initialize: function(p){
// here require.js has created cola in the local context but left it undefined
// so use the global copy created earlier:
if(cola === undefined){ cola = g_cola; } // crude but effective我很想知道为什么要求是卡住的,并希望有一个更好的解决方案。
https://stackoverflow.com/questions/33318786
复制相似问题