如何使用ES6语法(不需要Babel)导入类?

4

我有一个包含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和node版本:

$ npm -v
5.3.0

$ node -v
v8.0.0

如果没有使用Babel(或者其他与Babel相同的转译器),就无法使用importexport。您可以使用老式的const AccessManagerClient = require('...');。更有趣的问题是,为什么不使用Babel呢? - baao
3个回答

4

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

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

所以你需要做的是升级你的Node版本。FYI: 这个Node版本v10.9.0仍然是实验性的。


4
没有使用Babel或其他打包器/捆绑器/转换器,你不能实现,因为Node还没有本地支持import/export。要么使用Node自己的模块,要么使用打包器/捆绑器/转换器。请注意,HTML标签已保留。

0
根据官方Node网站,所有ECMAScript 2015(ES6)功能分为三组:已发布、阶段性和正在进行的功能:
  • 所有已发布的功能都被V8认为是稳定的,并且在Node.js上默认启用,不需要任何运行时标志。
  • 阶段性功能是几乎完成但未被V8团队认为是稳定的功能,需要一个运行时标志:--harmony。
  • 正在进行的功能可以通过各自的harmony标志单独激活,尽管这样做是高度不鼓励的,除非出于测试目的。注意:这些标志由V8公开,并且可能会在没有任何弃用通知的情况下发生更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接