Подтвердить что ты не робот

Неожиданный зарезервированный импорт слова в 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, но как я могу запустить его? Это похоже на бэкэнд для приложения, но я понятия не имею, какую команду следует использовать для его запуска без ошибок.

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Итак, вы можете использовать транспилер, например babel, чтобы запустить es6 script

npm install babel

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

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

ИЗМЕНИТЬ Этот ответ был основан на 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"]
}

Ответ 3

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

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

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

или

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