使用babel时出现意外的保留字'import'

Rob*_*Rob 26 javascript node.js ecmascript-6 babeljs

在我的NodeJSv4.1.1代码中使用Babel.

得到了需要挂钩:

require("babel-core/register");

$appRoot = __dirname;

module.exports = require("./lib/controllers/app");
Run Code Online (Sandbox Code Playgroud)

在随后的lodaded .js文件中,我正在做:

import { Strategy as LocalStrategy } from "passport-local";
Run Code Online (Sandbox Code Playgroud)

但是,这会在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)
Run Code Online (Sandbox Code Playgroud)

Ark*_*kin 25

听起来你没有使用正确的预设.从babel 6开始,核心babel加载器默认不再包含预期的ES6转换(它现在是通用代码转换器平台),而是必须使用预设:

require('babel-register')({
        "presets": ["es2015"]
});
Run Code Online (Sandbox Code Playgroud)

您还需要安装预设包:

npm install --save-dev babel-preset-es2015
Run Code Online (Sandbox Code Playgroud)

  • 这段代码属于哪里?在webpack配置?在babelconfig?在我正在运行的代码中? (7认同)
  • @Fractalf:来自babel-register的转换器不适用于需要它的文件,因此你不能在同一个文件中使用`import`.您必须改为需要另一个文件,然后可以使用完整的es2015语义 (2认同)