【问题标题】:Cannot read property 'ajax' of undefined无法读取未定义的属性“ajax”
【发布时间】:2023-03-07 12:41:01
【问题描述】:

请帮帮我,我正在使用以下代码:

index.js:

var $ =  require('./node_modules/jquery/dist/jquery.min');
var _ = require('./node_modules/underscore/underscore-min');
var Backbone = require('./node_modules/backbone/backbone-min');
require('./model/models');

run();

function run(){
    var session = new ****.***.Models.CustomerSession();
    session.save({
        "authenticators": ["********","****"]
    }).always(function(xhr){
        do_something...
    });
}

models.js:

**** = {};
****.*** = {};
****.***.Models = {};

var _ = require('../node_modules/underscore/underscore-min');
var Backbone = require('../node_modules/backbone/backbone-min');

/////////////MODELS/////////////

****.***.Models.CustomerSession = Backbone.Model.extend({
    urlRoot : 'https://*****.****.com/api/***/customer_session/'
});

****.***.Models.Transaction = Backbone.Model.extend({
    urlRoot : 'https://*****.****.com/api/***/transaction/'
});

****.***.Models.FaultType = Backbone.Model.extend({
    urlRoot : 'https://*****.****.com/api/***/fault_type/'
});

****.***.Models.FaultTypeSet = Backbone.Model.extend({
    urlRoot : 'https://*****.****.com/api/***/fault_type/'
});

****.***.Models.Task = Backbone.Model.extend({
    urlRoot : 'https://*****.****.com/api/***/task/'
});
///////////////////////////////

并得到以下错误:“无法读取未定义的属性 'ajax'”... 这是项目中除 node_modules 库之外的所有代码... 我认为骨干无法识别 $ 符号,但我不确定也不知道如何处理这个问题...... 请帮助我...

这是我看到的错误日志:

c:\ce\test_script\node_modules\backbone\backbone-min.js:1
h:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.appl
                                                                ^
TypeError: Cannot read property 'ajax' of undefined
at Object.e.ajax (c:\ce\test_script\node_modules\backbone\backbone-min.js:1:14801)
at e.sync (c:\ce\test_script\node_modules\backbone\backbone-min.js:1:14518)
at i.extend.sync (c:\ce\test_script\node_modules\backbone\backbone-min.js:1:3208)
at i.extend.save (c:\ce\test_script\node_modules\backbone\backbone-min.js:1:5716)
at run (c:\ce\test_script\index.js:14:13)
at Object.<anonymous> (c:\ce\test_script\index.js:10:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)

Process finished with exit code 8

这是使用主干代替主干分钟时的错误日志:

c:\ce\test_script\node_modules\backbone\backbone.js:1209
return Backbone.$.ajax.apply(Backbone.$, arguments);
                 ^
TypeError: Cannot read property 'ajax' of undefined
at Object.Backbone.ajax (c:\ce\test_script\node_modules\backbone\backbone.js:1209:22)
at Backbone.sync (c:\ce\test_script\node_modules\backbone\backbone.js:1188:38)
at _.extend.sync (c:\ce\test_script\node_modules\backbone\backbone.js:286:28)
at _.extend.save (c:\ce\test_script\node_modules\backbone\backbone.js:493:18)
at run (c:\ce\test_script\index.js:17:13)
at Object.<anonymous> (c:\ce\test_script\index.js:10:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)

Process finished with exit code 8

【问题讨论】:

  • 为了帮助您,我们需要有关错误的更多信息。它是否说明了错误发生在哪个文件中,在哪一行等等。给我们尽可能多的信息
  • 似乎没有加载 jQuery 库。可能你也需要在models.js中require它。
  • var $ = require('./node_modules/jquery/dist/jquery.min'); 添加到第二个文件中,你就是金子了
  • 谢谢大家,但还是不行
  • 您可能需要传入 jquery 或定义 jquery 用于 require 的位置,尤其是在节点端时。那里有一些范围,因此 var $ 可能不在全局范围内。

标签: javascript jquery ajax backbone.js require


【解决方案1】:

这被埋在上面的 cmets 中,但我遇到了同样的问题和设置

Backbone.$ = $

帮我解决了这个问题

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    相关资源
    最近更新 更多