首页 > 解决方案 > 防止导入 es6 默认导出

问题描述

我有一个小节点包,我希望用户只在他们的项目中使用命名导入。

import { Logger } from 'logger';

但是,没有什么可以阻止用户做

import defaultImportedLogger from 'logger';

defaultImportedLogger当他们发现那是undefined因为我的项目没有任何地方时,他们只会以艰难的方式学习export default。因此默认导出为undefined.

如果我尝试导入命名导出,例如:

import { foo } from 'logger'

我的编辑会抱怨,因为foo没有曝光。为什么我的编辑在默认导入的情况下没有抱怨?

标签: node.jsecmascript-6

解决方案


在未定义默认导出时尝试导入默认导出的结果取决于您使用的捆绑器。例如 Rollup会抛出一个错误:“'default' 不是由 <filename> 导出的”。

我认为没有任何方法可以阻止用户导入默认导出。您可以做的最好的事情是导出一个在调用时引发错误的函数,并显示错误消息“不要使用默认导出”。


推荐阅读