Search code examples
javascriptecmascript-5

SyntaxError: Unexpected token { when trying to export a class in es5 module for use in another module


Any ideas how the error is occuring? The class looks to be declared ok ..

car.js

function Car() {}

Car.prototype.setNumberOfWheels(numberOfWheels) {
    this.numberOfWheels = numberOfWheels;
}

Car.prototype.print() {
    console.log(this);
}

module.exports.Car = Car;

server.js

const model = require('./model.js');

Error:

Car.prototype.setNumberOfWheels(numberOfWheels) {
                                                ^

SyntaxError: Unexpected token {
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:617:28)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/bob/git/project/server.js:2:15)

Solution

  • You should declare setNumberOfWheels and print as a functions.

    Car.prototype.setNumberOfWheels = function(numberOfWheels) {
        this.numberOfWheels = numberOfWheels;
    }
    
    Car.prototype.print = function() {
        console.log(this);
    }