Uncaught Error: Несоответствующий анонимный модуль define(): определение функции (имя, глобальное)
Я получил эту ошибку при загрузке файла 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() были внесены некоторые изменения, так или иначе, я не могу понять это. У кого-нибудь есть идеи??
РЕДАКТИРОВАТЬ:::
Ниже находится файл 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)
(как показано ниже в 1 из Sol'n). Однако я все еще вижу ошибку. У кого-нибудь есть другие идеи???
2 ответа
ОБНОВИТЬ
После проверки документов - это первая ошибка, которую они обсуждают:
"Если вы вручную закодируете тег сценария в HTML для загрузки сценария с помощью анонимного вызова define(), эта ошибка может возникнуть".
Так что убедитесь, что единственный <script>
тег (по крайней мере для любых скриптов, которые вызывают define()
) в вашем index.html есть тот, который требует requirejs.
КОНЕЦ ОБНОВЛЕНИЯ
Вам нужно передать параметры вашему function()
вот так:
define([
'jquery',
'underscore',
'backbone'
],function(jquery, underscore, backbone){
subAccountRouter = Backbone.Router.extend({
routes: {
// Defining the routes
'sub-accounts': 'subAccountList',
'*actions': 'defaultAction'
},
});
Недавно я написал очень простой пост о настройке requirejs, если вы все еще застряли.
Согласно документам, require.js
может взорваться, если:
- У вас есть анонимное определение ("модули, которые вызывают
define()
без идентификатора строки ") в своем собственном теге сценария (я предполагаю, что на самом деле они имеют значение где угодно в глобальной области видимости). - У вас есть модули с конфликтующими именами.
- Вы используете плагины загрузчика или анонимные модули, но не используете
require.js
оптимизатор, чтобы связать их.
У меня была эта проблема при включении пакетов, созданных вместе с browserify require.js
модули. Решение было либо:
А. загрузить non-require.js
автономные пакеты в тегах скрипта перед require.js
загружен, или
Б. загрузить их, используя require.js
(вместо тега скрипта).