Adron
Adron

Reputation: 1856

TypeError: Object is not a function at Object.<anonymous> when constructing Javascript w/ new

I've put together a little code in one file, which is below:

var exports = Symphonize;

function Symphonize(generation_specification) {
    this.generate_spec = function(){
        return generation_specification;
    }
}

When I start another JavaScript file in the same project and require the code like so:

var symphonize = require('../bin/symphonize');
var Symp = new symphonize({"test":"test1"});

It throws the error:

/Users/adron/Codez/symphonize/tests/symphonize.js:8

var Symp = new symphonize({"test":"test1"});

          ^ TypeError: object is not a function at Object.<anonymous>

Is there another way I should be constructing this? I just want the "symphonize" code to require a simple object (an object of configuration that will be JSON) before any functions on that code are called.

Upvotes: 2

Views: 23344

Answers (1)

pllee
pllee

Reputation: 3959

When setting the exports something you must do module.exports = Something. You should do something like :

module.exports = Symphonize;

If you had Symphonize as a property on the exports module.exports is not needed

exports.Symphonize = Symphonize;

Use it in a file.

var Symphonize = require('../bin/symphonize').Symphonize


Also var exports is kind of ambiguous statement in Node.

Upvotes: 3

Related Questions