2015-11-14 3 views
26

Использование Babel в моем коде NodeJSv4.1.1.Неожиданное зарезервированное слово 'import' при использовании babel

Получили требуется крюк в:

require("babel-core/register"); 

$appRoot = __dirname; 

module.exports = require("./lib/controllers/app"); 

В дальнейшем lodaded .js файл я делаю:

import { Strategy as LocalStrategy } from "passport-local"; 

Однако это порождает следующую ошибку в CLI:

import { Strategy as LocalStrategy } from "passport-local"; 
^^^^^^ 

SyntaxError: Unexpected reserved word 
    at exports.runInThisContext (vm.js:53:16) 
    at Module._compile (module.js:413:25) 
    at loader (/Users/*/Documents/Web/*/node_modules/babel-core/node_modules/babel-register/lib/node.js:128:5) 
    at Object.require.extensions.(anonymous function) [as .js] (/Users/*/Documents/Web/*/node_modules/babel-core/node_modules/babel-register/lib/node.js:138:7) 
    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 module.exports (index.js:9:5) 
    at Object.<anonymous> (app.js:102:39) 
+0

Какая версия Вавилона? – max

+0

'" babel-core ":"^6.1.21 "' – Rob

+0

вы включили какие-либо плагины или пресетов Babel? – max

ответ

24

Похоже, вы не используете правильные предустановки. не касается Вавилонской 6, столпотворение погрузчика ядра больше не включает в себя ожидаемый ES6 трансформирует по умолчанию (теперь это универсальный код трансформатор платформа), вместо этого вы должны использовать предустановку:

require('babel-register')({ 
     "presets": ["es2015"] 
}); 

Вам также потребуется установить пребут пакет:

npm install --save-dev babel-preset-es2015 
+6

, где находится этот код? в конфигурации webpack? в babelconfig? в коде, который я запускаю? –

+1

@omouse вы обычно помещаете это в любую вашу главную точку входа, обычно index.js на верхнем уровне, прежде чем требовать остальную часть вашего кода. –

+0

В качестве небольшого дополнения мне пришлось установить npm install -save-dev babel -preset-es2015', так как он по умолчанию не появился с babel-register. Но этот ответ сработал для меня! – ArtHare

3

Похоже, что этот файл не переполнен. Загружен ли файл .js в каталог node_modules? Если да, то вам нужно:

require("babel-core/register")({ 
    // This will override `node_modules` ignoring - you can alternatively pass 
    // an array of strings to be explicitly matched or a regex/glob 
    ignore: false 
}); 

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

https://babeljs.io/docs/usage/require/

+0

Нет в моей папке' lib/controllers'.спасибо – Rob

+0

У меня есть последующие требования, которые требуют других вещей, это работает нормально с babel? – Rob

0

Я бил проблемы при попытке запустить тесты через мокко, и я решил проблему, поставив это в моем package.json файле:

"babel": { 
    "presets": [ 
     "es2015" 
    ] 
}, 

Я не совсем сл как это работает. Я выполняю такие тесты:

mocha --compilers js:babel-core/register --require ./test/test_helper.js --recursive 

В конечном счете, все это будет иметь смысл, я полагаю.

Смежные вопросы