Приложение Node.js SyntaxError: неожиданное зарезервированное слово «класс»

Я новичок в Node.js и только начал создавать приложение, используя плагины Eclipse и Nodeclipse. Когда я запускаю приложение с помощью Node core.js, оно работает нормально, но с помощью Eclipse появляется следующая ошибка:

/home/sarojs/projects/Core/security.js:3
  class Security {
  ^^^^^
SyntaxError: Unexpected reserved word
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/home/sarojs/projects/node/liveprojects/ecurvInc/Core/core.js:12:16)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)

Я не могу понять, что здесь не так. Я искал решение и нашел несколько ресурсов Неожиданное зарезервированное слово, но я не понял, как включить его в Eclipse.

Мой package.json выглядит так:

{
 "dependencies": {
 "bluebird": "^3.4.0",
 "body-parser": "~1.8.1",
 "cookie-parser": "~1.3.3",
 "cors": "^2.8.1",
 "debug": "~2.0.0",
 "express": "~4.9.0",
 "express-handlebars": "^3.0.0",
 "express-session": "^1.13.0",
 "mysql": "^2.11.1",
 "passport": "^0.3.2",
 "passport-local": "^1.0.0"
 }
}
  • Версия Node.js: 4.4.6
  • IDE: Eclipse Mars 1 с подключаемыми модулями Nodeclipse

Любая помощь будет высоко оценен.


person Saroj    schedule 23.11.2016    source источник
comment
Если вы не пишете в среде, которая понимает ES6, она предупредит вас о вещах, которые не относятся к ES5.   -  person Dave Newton    schedule 23.11.2016


Ответы (3)


Объявление class — это функция ES6. Функции ES6 почти не поддерживаются в узле 4.4.6. Попробуйте обновить его и снова запустить npm install.

См. также https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/class

person Tom M    schedule 23.11.2016
comment
я попытался обновить версию узла до 6.1.0 и запустил проект в eclipse, но проблема осталась. - person Saroj; 24.11.2016
comment
Спасибо ! Я обновил узел, и это сработало! благодаря тонну :) - person Saroj; 24.11.2016

Я решил проблему после того, как почесал голову в течение стольких часов.

Как сказал @Tom M, объявление класса является функцией ES6, и ранее у меня был узел 4.2.6, но когда я обновил его до версии 4.6.2, ошибка исчезла.

Я загрузил двоичный файл с здесь и установил узел, извлекая файл вручную на свой /usr/local каталог, а затем запустил

 npm install

Вы можете узнать, как установить двоичный файл узла вручную здесь

person Saroj    schedule 24.11.2016
comment
в системах *nix вы можете просто установить и поддерживать nodejs через менеджер пакетов (homebrew, yum, pacman, apt и т. д.). См.: nodejs.org/en/download/package-manager. - person Tom M; 24.11.2016

Классы JavaScript были недавно введены в ECMAScript 6. Они являются синтаксическим сахаром по сравнению с предыдущей прототипной моделью наследования.

Вы можете проверить, какая версия узла поддерживает синтаксис класса, через node.green.

Вы можете видеть, что концепция класса поддерживается начиная с версии 4.6.2, поэтому попробуйте обновить ее как минимум до версии 4.6.2. Но не все функции ES6 поддерживаются этой версией.

person Abstract View    schedule 24.11.2016