Unexpected reserved word 'import' when using babel
32,478
Solution 1
Sounds like you aren't using the right presets. As of babel 6, the core babel loader no longer includes the expected ES6 transforms by default (it's now a generic code transformer platform), instead you must use a preset:
require('babel-register')({
"presets": ["es2015"]
});
You will also need to install the preset package:
npm install --save-dev babel-preset-es2015
Solution 2
It seems that this file is not being transpiled. Is this subsequently loaded .js
file in the node_modules directory? If so, you need to:
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
});
By default all requires to node_modules will be ignored. You can override this by passing an ignore regex
https://babeljs.io/docs/usage/require/
Related videos on Youtube
Author by
rcjsdev
Updated on April 23, 2020Comments
-
rcjsdev about 4 years
Using Babel in my NodeJSv4.1.1 code.
Got the require hook in:
require("babel-core/register"); $appRoot = __dirname; module.exports = require("./lib/controllers/app");
In a subsequently lodaded
.js
file I am doing:import { Strategy as LocalStrategy } from "passport-local";
However this is generating the following error in the 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)
-
max over 8 yearswhat version of Babel?
-
rcjsdev over 8 years
"babel-core": "^6.1.21"
-
max over 8 yearshave you included any Babel plugins or presets?
-
rcjsdev over 8 yearsnope, i tried es2015preset but this broke my app as well, i got an issue where it was saying the following was undefined:
$passport = require('passport');
-
w00t over 8 yearsIs this on line 1? The error is being reported by the babel module.
-
Felix Kling over 8 yearsPlease read the tag descriptions.
babel
is for questions for a Python library with said name. -
max over 8 years@Rob with the es2015 preset, if you change
$passport = require('passport');
tovar $passport = require('passport');
, do you still see that error? -
ian over 8 yearsThis is a common error when running plain Node, which means you're likely seeing this because Babel isn't actually running. I would recommend switching over the the
babel-register
module as suggested by the docs since you're using Babel 6. Then make sure the file in question isn't getting ignored. See @pherris' comment below -
Jayesh about 8 yearsAlso make sure you have correct
.babelrc
. That was the problem in my case. -
Jules almost 7 years@ian - the stack dump includes this line:
at loader (/Users/*/Documents/Web/*/node_modules/babel-core/node_modules/babel-register/lib/node.js:128:5)
which sure sounds likebabel-register
is being used to me...
-
-
rcjsdev over 8 yearsI have subsequent requires which the require other things does this work okay w/ babel?
-
Admin about 8 yearswhere does this code belong? in a webpack config? in a babelconfig? in the code that I'm running?
-
Arkadiy Kukarkin about 8 years@omouse you'd usually put this into whatever your main entrypoint is, typically index.js at the top level, before requiring the rest of your code
-
ArtHare about 8 yearsAs a little addition, I had to
npm install --save-dev babel-preset-es2015
since it didn't come by default with babel-register. But this answer worked for me! -
Fractalf about 8 yearsI tried all that is mentioned here, but still I get this error. Very annoying. I got the top require("babel-core/register"); upgraded node/npm to 4.4/3.8.1. Have a file .babelrc with { "presets": ["es2015"] }. Installed babel-core, babel-register, babel-preset-2015. My node file has just the require above and import asap from "asap"; right under...
-
Arkadiy Kukarkin about 8 years@Fractalf: the transpiler from babel-register does not apply to the file in which it is required, so you cannot use
import
in the same file. You must instead require another file which can then use full es2015 semantics -
Fractalf about 8 years@ArkadiyKukarkin: thanks, so I tried to just require the es6 module and use babel-core in only that module, but then there is the same error just complaining about export. I got it all working with babel-node, and then just building it, but man how hard is this for a first time user! Very bad documentation for those who didn't touch babel yet :(
-
Fractalf about 8 yearsFinally found something that made this work: leanpub.com/setting-up-es6/read#sec_nodejs-babel-dynamic github.com/rauschma/node-babel-dynamic-demo
-
yussan about 8 yearsit's working after i place on very top of line on my app file root, thanks
-
JREAM almost 6 yearsuse
babel-preset-env
it covers babel-preset-2015-17 and its going to recommend it. -
2080 over 5 yearsI created a .babelrc in the root directory of the project and added
{ "presets": ["es2015"] }
to it