【问题标题】:export default <Class> exports double nested defaultexport default <Class> 导出双嵌套默认值
【发布时间】:2020-07-03 23:49:42
【问题描述】:

首先我想说我知道我的标题不是描述我的问题的最佳方式,但同时我对这项技术没有清晰的理解,无法用一种更好的方法。

一些信息

我正在开发一个相当大的开源项目,通过使用 webpack,您可以将整个东西捆绑在一个文件中。

该项目主要是用 Typescript 编写的。

建立

我有一个脚本,其中包含并以这种方式导出类 Dom()

export default class Dom {
    //stuff
}

在另一个脚本中,我将这个类导入为$,并通过$.functionName() 访问它,没有编译器错误。

import $ from './dom';

export default class SelectionUtils {
    //stuff
}

问题

在整个项目编译并与 webpack 捆绑后,我部署它并看到 Dom 类的实例以 _dom.default.default 而不是 _dom.default 的形式部署。这意味着我无法访问类函数。

对象结构:

_dom
 |--default
 |  |--default: f Dom()
 |  |--__esModule: true
 |  |--_proto_: Object
 |--_proto_: Object

欢迎任何关于为什么会发生这种情况的提示。

提前致谢。

PS:我试图使这篇文章尽可能清晰,但由于我不了解问题的性质,我真的很难表达它。

【问题讨论】:

  • 如果 typescript 正在生成该代码,这是一个严重的错误,但我怀疑情况是否如此。听起来您遇到了某种奇怪的加载程序问题。确保所有依赖项都是最新的
  • @AluanHaddad 问题是以前的构建还可以。然后我对代码进行了许多更改,但并没有真正弄乱结构本身。我刚刚将一个类导入到多个脚本中。我花了几个小时试图弄清楚这一点,但这对我来说毫无意义。我最终找到了解决方案,但我确信我可以做得更好。

标签: node.js typescript ecmascript-6 module editorjs


【解决方案1】:

我通过在要使用导入的类中创建一个变量解决了我的问题。

类似这样的:

export default class SelectionUtils {
    
    public $ = require('./dom').default;
    //stuff
}

我知道这可能不是最好的解决方案,但它现在有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 2018-12-18
    • 2019-10-09
    • 2017-07-09
    • 2020-12-07
    • 2014-08-12
    • 2019-09-07
    • 2018-03-25
    相关资源
    最近更新 更多