Requirejs 错误 - 模块加载超时:jquery
Requirejs error - Load timeout for modules: jquery
我有以下文件夹结构
index.html
scripts/
- app.js
- app/
-- main.js
-- page.js
- lib/
-- require.js
-- jquery.min.js
index.html :
<head>
<script data-main="scripts/app" src="scripts/lib/require.js"></script>
</head>
app.js :
requirejs.config({
baseUrl: 'scripts/lib',
paths: {
app : '../app',
jquery : 'jquery.min'
},
shim : {
'jquery': {
deps : ['app/page'],
exports: '$'
}
}
});
requirejs(['app/main']);
main.js :
require(["app/page"], function(page){
page.renderPage();
});
page.js :
define(['jquery'], function($) {
return {
renderPage : function() {
//some code
}
}
});
加载 index.html 时,我在控制台中收到以下错误:
Uncaught Error: Load timeout for modules: jquery
http://requirejs.org/docs/errors.html#timeout
at makeError (require.js:168) at checkLoaded (require.js:698) at require.js:719
我检查了很多相关问题并尝试了各种选项,但无法使 jquery 与 requirejs 一起工作。我究竟做错了什么?
jquery
不应该有 shim
。 shim
配置选项仅适用于不是实际 AMD 模块的脚本。 AMD 模块通过调用 define
向模块加载器注册自己。 jQuery很早以前就添加了支持注册自己为AMD模块,所以自己调用define
。你可以在它的源代码中看到它here:
if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function() {
return jQuery;
} );
}
jQuery 调用 define
所以你不能为它设置 shim
。
对 AMD 模块使用 shim
没有明确的含义。换句话说,当您尝试为 AMD 模块指定 shim
配置时,RequireJS 不必符合任何 特定行为 。 RequireJS 可能会忽略它,或者它可能表现得很糟糕。
我有以下文件夹结构
index.html
scripts/
- app.js
- app/
-- main.js
-- page.js
- lib/
-- require.js
-- jquery.min.js
index.html :
<head>
<script data-main="scripts/app" src="scripts/lib/require.js"></script>
</head>
app.js :
requirejs.config({
baseUrl: 'scripts/lib',
paths: {
app : '../app',
jquery : 'jquery.min'
},
shim : {
'jquery': {
deps : ['app/page'],
exports: '$'
}
}
});
requirejs(['app/main']);
main.js :
require(["app/page"], function(page){
page.renderPage();
});
page.js :
define(['jquery'], function($) {
return {
renderPage : function() {
//some code
}
}
});
加载 index.html 时,我在控制台中收到以下错误:
Uncaught Error: Load timeout for modules: jquery http://requirejs.org/docs/errors.html#timeout at makeError (require.js:168) at checkLoaded (require.js:698) at require.js:719
我检查了很多相关问题并尝试了各种选项,但无法使 jquery 与 requirejs 一起工作。我究竟做错了什么?
jquery
不应该有 shim
。 shim
配置选项仅适用于不是实际 AMD 模块的脚本。 AMD 模块通过调用 define
向模块加载器注册自己。 jQuery很早以前就添加了支持注册自己为AMD模块,所以自己调用define
。你可以在它的源代码中看到它here:
if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function() {
return jQuery;
} );
}
jQuery 调用 define
所以你不能为它设置 shim
。
对 AMD 模块使用 shim
没有明确的含义。换句话说,当您尝试为 AMD 模块指定 shim
配置时,RequireJS 不必符合任何 特定行为 。 RequireJS 可能会忽略它,或者它可能表现得很糟糕。