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