Oleksandr H
Oleksandr H

Reputation: 3015

How to fix Uncaught TypeError: Cannot read property 'prototype' of undefined?

I have a little problem. I'm using backbone.js. I wrote this code like in example:

<script>
$(document).ready(function () {
    window.App = {
        Views: {},
        Models: {},
        Collections: {}
    }

    App.Collections.Users = Backbone.Collection.extend({
         model: App.Models.User,
         url: 'service'
    });
    App.Models.User = Backbone.Model.extend({});

    App.Views.App = Backbone.View.extend({
         initialize: function() {
             console.log( this.collection.toJSON() );
         }
    });

});
</script>

Than I started server and in browser console type this:

var x =new App.Collections.Users();
x.fetch()

And this follows to error: Uncaught TypeError: Cannot read property 'prototype' of undefined. But data is present in response. Details in picture. How to fix this? Thanks for you answers.enter image description here

enter image description here

Upvotes: 46

Views: 126376

Answers (4)

niek tuytel
niek tuytel

Reputation: 1179

In my case, the following imports are incorrect: (react)

// remove
import e from 'express';

Upvotes: 2

vishal dange
vishal dange

Reputation: 21

In my case , imports were incorrect

import { urlencoded } from "express";
When I removed this statement , it worked for me. Check imports of the files you are working with , wheteher something unnecessary imported

Upvotes: 2

Oleksandr H
Oleksandr H

Reputation: 3015

I fixed this bug. The problem was that I created Collection and then the Model. Collections use user model, as working unit, but when I defined this Collection, I did not define Model.

So, if you want to avoid this bug, firstly define a Model and only then define the Collection.

Upvotes: 66

rzskhr
rzskhr

Reputation: 991

Backbone Js has dependency with underscore.js and jQuery, try reordering the resources. This worked for me:

<head>
    <title>Backbone</title>

    <!-- Scripts Load Here-->       
    <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
    <script type="text/javascript" src="js/underscore.js"></script>
    <script type="text/javascript" src="js/backbone.js"></script>
</head>

Upvotes: 27

Related Questions