我在加载主干的requirejs文件时遇到了这个错误。我尝试加载r.js,requirejs优化器,但我仍然坚持使用它。
Uncaught Error: Mismatched anonymous define() module: function definition(name, global){
"use strict";
var PubSub = {
name: 'PubSubJS',
version: '1.3.1-dev'
以下是我的js:
define([
'jquery',
'underscore',
'backbone'
],function(){
subAccountRouter = Backbone.Router.extend({
routes: {
// Defining the routes
'sub-accounts': 'subAccountList',
'*actions': 'defaultAction'
},
});
似乎已经对requirejs define()调用函数进行了一些更改,不知何故无法弄清楚它。有没有人有想法?
EDIT :::
以下是router.js文件。
define([
'jquery',
'underscore',
'backbone'
],function($, _, Backbone){
SubAccountRouter = Backbone.Router.extend({
routes: {
'sub-accounts': 'subAccountList',
'*actions': 'defaultAction'
},
initialize: function () {
this.appContainer = $("#subaccount");
//collections and models
this.subAccountCollection = null;
this.subAccountModel = null;
},
subAccountList: function(){
var self = this;
},
defaultAction: function(){
this.subAccountList();
},
});
return {
initialize: function() {
Backbone.history.start();
}
};
}); //main func
我在这做错了什么?
我检查我的路径,他们似乎是正确的,我仍然不明白为什么这个问题仍然困扰着我.. :(
我尝试更改路径的路径,并将参数传递给function($, _, Backbone)
(如下面的sol' n中所示)。但是我似乎仍然看到错误。有没有人有任何其他想法???
答案 0 :(得分:16)
<强>更新强>
检查文档后 - 实际上是the first error they discuss:
“如果您在HTML中手动编写脚本标记以加载带有匿名define()调用的脚本,则可能会发生此错误。”
因此,请确保index.html中唯一的<script>
标记(至少对于任何调用define()
的脚本)是requirejs。
END UPDATE
您需要将参数传递给function()
,如下所示:
define([
'jquery',
'underscore',
'backbone'
],function(jquery, underscore, backbone){
subAccountRouter = Backbone.Router.extend({
routes: {
// Defining the routes
'sub-accounts': 'subAccountList',
'*actions': 'defaultAction'
},
});
我最近写了super-simple post on setting up requirejs,如果你仍然被卡住了。
答案 1 :(得分:3)
根据文档,require.js
可能会爆炸,如果:
define()
的模块没有
字符串ID&#34;)在它自己的脚本标签中(我假设它们的意思是
全球范围内的任何地方)。require.js
优化程序捆绑它们。我在使用browserify和require.js
模块一起构建的包时遇到了这个问题。解决方案是:
一个。在加载non-require.js
之前加载require.js
独立包在脚本标记中,或
B中。使用require.js
(而不是脚本标记)加载它们。