如何使用ES6语法导入类? (没有巴贝尔)

时间:2017-08-28 10:54:44

标签: node.js ecmascript-6

我的文件包含默认导出的ES6类:

accessmanager.js

   export default class AccessManagerClient {
      constructor(){
        ...
      }
    }

我想像这样导入它:

anotherFile.js

import AccessManagerClient from '../someFolder/accessmanager';

当我运行我的规范时,我收到错误:

import AccessManagerClient from '../someFolder/accessmanager';
^^^^^^

SyntaxError: Unexpected token import

我有这样的npm和节点版本:

$ npm -v
5.3.0

$ node -v
v8.0.0

3 个答案:

答案 0 :(得分:4)

你不能没有Babel或其他打包器/ bundler / transpiler,因为Node还没有import / export的原生支持。要么使用Node自己的modules,要么使用packager / bundler / transpiler。

答案 1 :(得分:4)

我知道这是一个老问题。但是如果其他人仍在寻找替代方案,现在有了新的Node版本,我们可以在没有Babel的情况下使用:

https://nodejs.org/api/esm.html

因此,您需要做的是升级Node版本。仅供参考:此节点版本v10.9.0仍处于试验阶段。

答案 2 :(得分:0)

根据official node site,所有ECMAScript 2015(ES6)功能分为三组,用于发送,暂存和进行中的功能:

  • V8认为稳定的所有出货功能在Node.js上默认打开,不需要任何类型的运行时标记。
  • 分阶段功能是V8团队认为不稳定的几乎完成的功能,需要运行时标志: - 和声。
  • 正在进行的功能可以通过各自的和声标志单独激活,但除非出于测试目的,否则强烈建议不要这样做。注意:这些标志由V8公开,可能会在没有任何弃用通知的情况下发生变化。