неожиданный импорт зарезервированного слова в node.js

Я пытаюсь запустить внутренний сервер node.js. Я получил ошибку unexpected reserved word при импорте в файл Node.js.

Строки в файле core.module.js:

'use strict';
import lodashMixins from './lodashMixins.js'
... other imports and configurations ...

Запускаю простую команду: node core.module.js

Это нередкая ошибка, но обычно это случается с другими библиотеками. Я не видел решения для Node.js. Как мне это исправить? Я использую Windows Server.

Изменить: я обнаружил, что это ES6, но как мне его запустить? Это похоже на бэкэнд для приложения, но я понятия не имею, какую команду мне использовать, чтобы запустить его без ошибок.


person Dracontis    schedule 02.09.2015    source источник
comment
вы можете использовать что-то вроде babel. Связанный вопрос ссылка   -  person Sami    schedule 02.09.2015


Ответы (3)


Ключевое слово import является частью функции модулей в ECMAScript 2015. , а также export и несколько других спецификаций.

В настоящее время он изначально не реализован в NodeJS, даже в самой последней версии (v0.12.7), и не поддерживается в «более дружественном» форке ES2015 iojs.

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

[edit] он по-прежнему не поддерживается в последней версии (v5.8), несмотря на наличие флага --harmony_modules, который ничего не делает. Лучше всего использовать babel, как объяснено здесь и здесь

person Amit    schedule 02.09.2015
comment
Это аутсорсинговый проект, так что каким-то образом он был построен и запущен на их стороне. Как я могу найти транспиляторы? Я пробовал искать по всему проекту «babel» или «transpiler», но ничего не нашел. Я мог бы опубликовать полный код core.module, если бы он мог дать ключ. Я думаю, что смогу запустить его без редактирования кода, но не знаю, как это сделать. - person Dracontis; 02.09.2015
comment
Так почему бы вам не спросить ИХ? - person Amit; 02.09.2015
comment
Также может быть, что они запускают его под форком NodeJS, который работает с SpiderMonkey. - person Eugene Obrezkov; 02.09.2015
comment
@Амит, потому что они сказали, что заняты и отказываются отвечать на вопросы. Если бы это было так просто, я бы не использовал SO. Но мне нужно понять, как сбежать. - person Dracontis; 02.09.2015
comment
@EugeneObrezkov, для пользовательского интерфейса они использовали чистый Node.js. Но я попробую вилку. - person Dracontis; 02.09.2015

import является частью ECMAScript 2015 (ES6) standard и как Amit выше упоминалось, что в настоящее время он не реализован изначально в Nodejs.

Таким образом, вы можете использовать транспайлер, такой как babel, для запуска вашего es6 скрипта.

npm install babel

Пример, основанный на этом ответе

app.js

 import {helloworld,printName} from './es6'
 helloworld();
 printName("John");

es6.js

 module.exports = {
    helloworld: function() { console.log('hello world!'); },
    printName: function(name) { console.log(name); }
}

И использование require hook в start.js

require("babel/register");
var app = require("./app.js");

И запустите свое приложение как

node start.js

EDIT Приведенный выше ответ был основан на babel v5.8.23. Для babel >= v6

Используйте require hook в start.js как

require('babel-core/register');
require("./app.js");

Кроме того, преобразования не включены по умолчанию. Поэтому вам нужно будет установить файл preset. В этом случае используйте es2015.

npm install babel-preset-es2015

И используйте его в файле .babelrc в корневой папке.

{
   "presets": ["es2015"]
}
person Sami    schedule 02.09.2015
comment
В вашем примере app.js и server.js должны быть одним и тем же? - person jpierson; 29.12.2015
comment
если это как-то не работает, просто верните зависимость, которая ломается, к предыдущему номеру версии. В моем случае это модуль http-master. - person jeevs; 23.02.2016
comment
требуют('babel-ядро/регистр'); - person Foreever; 15.03.2017

Я столкнулся с этой проблемой, когда вручную устанавливал любой из этих инструментов вне Visual Studio. Но Visual Studio поставляется с несколькими инструментами командной строки с открытым исходным кодом, которые используются в современных рабочих процессах веб-разработки. Вот как вы можете указать Visual Studio использовать ту же версию, которую вы установили вручную.

Перейдите в Инструменты -> Параметры -> Проекты и решения -> Внешние веб-инструменты.

  • Установите глобальную переменную среды PATH перед внутренним путем, вы можете просто использовать стрелки в правом верхнем углу, чтобы изменить порядок.

or

  • Сначала найдите уже установленную версию Node.js и используйте ее в командной строке. По умолчанию Node.js 0.12.7 устанавливается в «C:\Program Files\nodejs». Добавьте эту запись в начало пути к каталогу node.js, чтобы заставить Visual Studio использовать эту версию.
person sree    schedule 08.08.2016