【发布时间】:2021-02-24 12:22:26
【问题描述】:
我有一个模块,说如下:
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;
我怎样才能形成我的出口,这样我就不必进行默认的解构?出于这个原因,我应该完全避免默认导出吗?
有点奇怪,如果:
- 我使用
esm,就像node -r esm index.js,但如果我使用mjs作为文件扩展名(设置"type": "module"),只有js - 它不适用于
--experimental-modules、--experimental-specifier-resolution=node和"type": "module"中的package.json, - 在每个非工作情况下,导入值为
{ default: [Function: awesomeFn] },只有esm是值[Function: awesomeFn]
所以我想这就是现在的解决方案;依赖外部包来实现预期的行为,或者使用命名的导出,它们可以按预期工作。这是怎么回事?
【问题讨论】:
标签: javascript import export default