Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “怎么可能?”;定义;使用RequireJS加载时未定义?_Javascript_Requirejs_Amd - Fatal编程技术网

Javascript “怎么可能?”;定义;使用RequireJS加载时未定义?

Javascript “怎么可能?”;定义;使用RequireJS加载时未定义?,javascript,requirejs,amd,Javascript,Requirejs,Amd,我很难理解为什么加载了RequireJS的模块不能访问define函数 在我的HTML中: <script data-main="/assets/js/app/main.js" src="/assets/libs/require.js/2.1.9/require.js" type="text/javascript"></script> 在这种情况下,colorbox.js加载得很好,包装方式如下: define(['jquery'], function ( jQuery

我很难理解为什么加载了RequireJS的模块不能访问
define
函数

在我的HTML中:

<script data-main="/assets/js/app/main.js" src="/assets/libs/require.js/2.1.9/require.js" type="text/javascript"></script>
在这种情况下,
colorbox.js
加载得很好,包装方式如下:

define(['jquery'], function ( jQuery ) {
     // ...Colorbox code here
});
当它尝试加载jvfloat.js时,会抛出:

未捕获引用错误:未定义定义

即使它是用与色盒完全相同的包装纸包装的

我甚至尝试添加一个垫片(这不是很有意义),以查看是否可以强制加载…但这也不起作用:

shim: {
   'jvfloat': {
      deps: ['require','jquery'],
      exports: 'jvfloat'
   }
}
我还尝试移除
define
包装器,并按如下方式设置垫片:



TL;博士什么会导致RequireJS加载的库无法访问
define
函数

好的,我使用RequireJS配置的垫片找到了一个解决方法。我以前尝试过的方法是使用
jvfloat
作为数组键,而我本应该使用完整的东西。所以这是可行的:

require.config({
  baseUrl: 'http://test.dev/cart/assets',
  paths: {
     jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
  },
  shim: {
     'js/lib/jvfloat': {
        deps: ['jquery'],
        exports: 'jQuery.fn.jvfloat'
     }
  }
});

仍然不知道如何使用
定义
,但是,哦,好吧,这算是一个解决方案,将来可能会帮助其他人。

如果jvfloat的包装方式与colorbox相同,为什么要使用
shim
shim
适用于未使用
define
包装的模块。我说我甚至尝试过使用shim。我理解它的目的。jvFloat是一个jQuery插件,因此,为了确保它具有依赖性,我试图让它与RequireJS一起工作,并确保该插件添加到RequireJS传递的同一个jQuery实例中。我想我关注的是代码块,错过了上面的简短描述。我的错误。。。这看起来确实很奇怪,
define
在全局范围内,应该在没有阴影的任何地方都可见。
shim: {
    'jvfloat': {
        deps: ['jquery'],
        exports: 'jQuery.fn.jvfloat'
    }
}
require.config({
  baseUrl: 'http://test.dev/cart/assets',
  paths: {
     jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
  },
  shim: {
     'js/lib/jvfloat': {
        deps: ['jquery'],
        exports: 'jQuery.fn.jvfloat'
     }
  }
});