Parse.View.extend - "无法读取属性'extend'undefined&qu

Parse.View.extend - "cannot read property 'extend' of undefined"

本文关键字:extend 属性 undefined qu 读取 View quot Parse      更新时间:2023-09-26

目前使用Parse JavaScript SDK的web应用程序,但我也是新的骨干,因为这个特殊的问题是在功能,Parse从骨干复制过来,我不确定我到底在哪里犯了我的错误。

我有index.html,具有这样的基本结构&脚本模板标签(由_underscore使用):

<div id="my-app">        
</div>
<script type="text/template" id="album-header-template">
    <div id="some-id">
          Some Content
    </div>
</script>

<body>的末尾,下面的脚本标记,以照顾Parse依赖,加载Parse, &使用我自己的JS文件:

<script src="libraries/node_modules/jquery/dist/jquery.min.js"></script>
<script src="libraries/node_modules/underscore/underscore-min.js"></script>
<script src="libraries/node_modules/parse/dist/parse-latest.min.js"></script>
<script src="app/ParseApp.js"></script>

然后在ParseApp.js中,我试图通过创建简单的对象和视图来脱离地面,我有以下内容:

$(function () {
    var Album = Parse.Object.extend("Album",{
            // Default attributes for the album
            defaults: {
              name: "Album Title"
            },
            // Ensure that each album created has a title
            initialize: function() {
              if (!this.get("name")) {
                this.set({"name": this.defaults.content});
              }
            },
        });
    var HomeView = Parse.View.extend({
        el: $("#my-app"),
        initialize: function() {
            console.log("new instance of HomeView");
            this.render();
        },
        render: function() {
            this.$el.html(_.template($("#album-header-template").html()));
        }
    });
    new HomeView;
});

当我在浏览器中运行index.html时,我在控制台中得到以下错误:Uncaught TypeError: Cannot read property 'extend' of undefined(发生在var Home View = Parse.View.extend行)。

最初,我认为这可能是因为Parse没有及时启动ParseApp.js使用它,基于我的脚本加载。然而,我从Parse中运行了推荐的"测试SDK"脚本,并且它确实被初始化了(此外,使用var Album添加对象可以正常工作)。所以我真的被困在导致HomeViewParse.View"未定义"的原因上。

可能是我忽略的一个直接的答案,但任何帮助都会非常感激,如果需要,我可以提供完整的文件。

不是一个非常令人满意的答案,但感谢@Yura &@Daniel Blank,发现这个错误是因为Parse SDK的最新版本(1.6.0之后的所有版本)不再包含完整的Backbone功能。这包括我从npm本地使用的版本。

解析SDK方向的最佳解释在上面给出的链接中,对于那些希望继续使用Parse和/或Backbone的人来说,似乎有三个选择:
  1. 使用旧版本(1.5.0是包含骨干功能的最新版本)来维护骨干功能,例如Parse.CollectionParse.Router
  2. 尝试解析sdk无关,同时继续使用骨干。可以使用基本的Parse REST API,或者尝试其中一个GitHub项目尝试为您做链接。
  3. 放弃Backbone,并使用Parse与VanillaJS,或者可能切换到React(这显然是Facebook希望Parse的方向)

我太没有经验了,不能推荐这三种方法中的任何一种,尽管#1似乎是最简单的,而#3似乎是最容易维护的。我还在试着自己做决定,但这已经超出了我最初问题的范围。谢谢大家的帮助。

有两件事让我眼前一亮:

  1. 我不知道你在哪里初始化Parse…通常,产生不同的错误,但仍然可能是一个问题
  2. 您正在引用自己的本地库进行Parse…也许可以尝试瞄准正式部署的版本。

脚本src = " http://www.parsecdn.com/js/parse-1.2.13.min.js "