使用 RequireJS 加载时如何不定义“定义”
How can "define" not be defined when loading with RequireJS?
我正在努力理解为什么加载了 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>
在main.js
:
// Initialize Require.js
require.config({
baseUrl: 'http://test.dev/cart/assets',
paths: {
jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
}
});
// Main app logic
require( ['jquery',
'js/app/cart',
'js/app/wizard',
'js/lib/colorbox',
'js/lib/jvfloat'], function ($, Cart, Wizard, ColorBox, jvfloat) {
// Initialize Cart
Cart.init();
// Initialize Wizard
Wizard.init();
}
);
在这种情况下,colorbox.js
加载得很好,包装方式如下:
define(['jquery'], function ( jQuery ) {
// ...Colorbox code here
});
当它尝试加载 jvfloat.js 时,它会抛出:
未捕获的引用错误:未定义定义
即使它用与 colorbox 完全相同的包装纸包装。
我什至尝试添加一个垫片(不是说它有意义)看看我是否可以强制加载......但这也没有用:
shim: {
'jvfloat': {
deps: ['require','jquery'],
exports: 'jvfloat'
}
}
我还尝试删除define
包装器,并像这样设置我的填充程序,这是文档建议的方式:
shim: {
'jvfloat': {
deps: ['jquery'],
exports: 'jQuery.fn.jvfloat'
}
}
博士;什么会导致 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'
}
}
});
仍然不知道如何使用define
来做这样的事情,但是,哦,好吧,这算作一个解决方案,将来可能会帮助其他人。
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 控制台返回var不是't定义,但它是
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- jQuery自定义验证比较多个输入的序列
- 查看JS对象的所有键,甚至是getter定义的键
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- $window.ga在AngularJS事件中未定义
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 未捕获的TypeError无法读取未定义的属性socialsharing
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 定义完全独立的样式信息
- 如何在选项卡上定义属性'的主窗口对象
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的