SyntaxError: неожиданный токен {при попытке экспортировать класс в модуле es5 для использования в другом модуле - PullRequest
0 голосов
/ 14 ноября 2018

Есть идеи, как происходит ошибка?Класс выглядит объявленным нормально ..

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');

Ошибка:

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)

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Правильный способ объявления метода с использованием сокращенного синтаксиса (для инициализаторов объектов):

var car = {}

Затем для добавления методов

Car.prototype.setNumberOfWheels = numberOfWheels => {
    this.numberOfWheels = numberOfWheels;
}

Car.prototype.print = () => {
    console.log(this);
}
0 голосов
/ 14 ноября 2018

В Ecmascript-5 вы должны определить setNumberOfWheels и print как функции ( см. Примеры прототипов )

function Car() {}

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

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

module.exports.Car = Car;

Вы можете использовать ES6 Классы

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


module.exports.Car = Car;
0 голосов
/ 14 ноября 2018

Вы должны объявить setNumberOfWheels и print как функции.

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

Car.prototype.print = function() {
    console.log(this);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...