javascript – RequireJS错误地从URL加载脚本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – RequireJS错误地从URL加载脚本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2580字,纯文字阅读大概需要4分钟。
内容图文
![javascript – RequireJS错误地从URL加载脚本](/upload/InfoBanner/zyjiaocheng/744/ab982a791ae14af0ad88ff4693605529.jpg)
我正在使用RequireJS来加载依赖项.这是我的配置的样子:
'use strict';
require.config({
paths: {
jQuery: 'http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min',
underscore: 'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min',
backbone: 'http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.0/backbone-min'
}
shim: {
jQuery: {
exports: '$'
},
underscore: {
exports: '_'
},
backbone: {
deps: [
'underscore',
'jQuery'
],
exports: 'Backbone'
}
}
});
当我运行我的静态网站时,在控制台中有如下消息:
GET http://*myhost*/js/backbone.js 404 (Not Found) require.js:1896
Uncaught Error: Script error for: backbone
http://requirejs.org/docs/errors.html#scripterror require.js:166
GET http://*myhost*/js/jQuery.js 404 (Not Found) require.js:1896
Uncaught Error: Script error for: jQuery
http://requirejs.org/docs/errors.html#scripterror require.js:166
GET http://*myhost*/js/underscore.js 404 (Not Found) require.js:1896
Uncaught Error: Script error for: underscore
http://requirejs.org/docs/errors.html#scripterror require.js:166
Uncaught ReferenceError: jQuery is not defined
如您所见,RequireJS忽略了我为CND提供URL并尝试在本地查找模块的事实.
但是,有时RequireJS工作正常 – 它从URL加载模块.那边有一些彩票.值得一提的是,它只发生在我的远程开发服务器上 – 也就是我通过网络访问我的网站时.当我在本地运行我的网站时,RequireJS总是从CDN完全加载模块.奇怪,任何想法为什么会发生这种情况?
UPDATE
这就是我启动应用程序的方式:
<script type="text/javascript" data-main="js/main" src="js/require.js"></script>
main.js(加载配置的地方)
define(['config', 'router'], function(Config, Router) {
var router = new Router();
Backbone.history.start();
});
解决方法:
您的主要模块以此开头:
define(['config', 'router'], function(Config, Router) {
这告诉RequireJS加载配置和路由器,但没有指定它们应该加载的顺序.如果路由器依赖于使用您在配置中列出的CDN的模块,并假设配置不在路由器的依赖项中,那么您确实会遇到间歇性加载失败.当配置恰好在路由器之前加载一切都很好.如果配置在路由器之后加载,那么所有的地狱都会破裂.解决此问题的最简单方法是将配置移动到main.js文件中.您可以在define调用之前调用require.config,并且您显然不再在依赖项中列出配置.
如果将调用移到require.config对您不起作用,因为(例如)您需要在多个页面之间共享配置,那么这也可以解决问题:
define(['config'], function () {
require(['router'], function(Router) {
var router = new Router();
Backbone.history.start();
});
});
上面的代码确保在其他任何内容之前加载配置.
您的配置在以下方面也是错误的:
>你必须始终将jQuery称为jquery,因为jQuery(无论好坏)将其模块名称硬编码为jquery所有低级别的大写字母.我使用jQuery而不是jquery运行测试,结果不稳定.
> jQuery 2.0.3不需要垫片.拥有垫片只会让RequireJS感到困惑.
内容总结
以上是互联网集市为您收集整理的javascript – RequireJS错误地从URL加载脚本全部内容,希望文章能够帮你解决javascript – RequireJS错误地从URL加载脚本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。