使用 ES6 语法解析已编译的默认导出

Resolving compiled default exports with ES6 syntax

我有一个模块,说如下:

const awesomeFn = () => ...

export default awesomeFn;

它是使用 babel 内置到 ES5 中的,当我创建另一个 ES6 模块时,我想要以下语法:

npm i awesomeFn

// ./index.js
import awesomeFn from 'awesomeFn';

awesomeFn();

但这抛出。记录 awesomeFn 给我 { default: _default [Function()] } (或类似的东西),暗示我需要做类似

的事情
import awesomeFnPackage from 'awesomeFn';
const { default: awesomeFn } = awesomeFnPackage;

我怎样才能形成我的出口,这样我就不必做默认的解构?由于这个原因,我应该完全避免默认导出吗?


有点奇怪,这在以下情况下有效:

所以我想这就是现在的解决方案;依赖外部包实现预期行为,或使用命名导出,它们按预期工作。这是怎么回事?

嘿,看来你的设置有问题。默认函数在导出时被命名为“default”(ES5)。 你可以像这样直接在 import 语句中解构:

import { default as awesomeFn } from 'awesomeFn';

awesomeFn()
  

提供的解决方案here, which is to destructure the default property as stated in the question, or add yet another dependency 直观地使用 es6 导入。

为了简洁起见,我将省略 Babel 做出此选择的原因 reader 以进行研究。我的结论是用ES5还是不用默认导出。在撰写本文时,ES6 语法在 import/exports 的上下文中一团糟,不仅在这个问题的上下文中,而且在 npm 包装、文件扩展名、标志、package.json 属性的上下文中等