Ошибка поиска: Неверный анонимный метод 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 of soln). Однако я все еще вижу ошибку. Есть ли у кого-нибудь другие идеи?
Ответы
Ответ 1
UPDATE
После проверки документов - это фактически первая ошибка, которую они обсуждают:
"Если вы вручную закодировали тег script в HTML для загрузки script с анонимным вызовом define(), эта ошибка может произойти."
Поэтому убедитесь, что в теге index.html указан только тег <script>
(по крайней мере для любых скриптов, вызывающих define()
).
END UPDATE
Вам нужно передать параметры function()
следующим образом:
define([
'jquery',
'underscore',
'backbone'
],function(jquery, underscore, backbone){
subAccountRouter = Backbone.Router.extend({
routes: {
// Defining the routes
'sub-accounts': 'subAccountList',
'*actions': 'defaultAction'
},
});
Недавно я написал супер-простую запись о настройке requirejs, если вы все еще застряли.
Ответ 2
В документах require.js
может взорваться, если:
- У вас есть анонимное определение ("модули, которые вызывают
define()
без
string ID ") в своем собственном теге script (я предполагаю, что на самом деле они означают
в любом месте в глобальном масштабе).
- У вас есть модули с конфликтующими именами.
- Вы используете плагины-загрузчики или анонимные модули, но не используете
require.js
оптимизатор для их объединения.
У меня была эта проблема, включая пучки, созданные с помощью браузера, рядом с модулями require.js
. Решение было либо:
а. загрузите автономные пакеты non-require.js
в тегах script до загрузки require.js
или
В. загрузите их с помощью require.js
(вместо тега script).