gpt4 book ai didi

javascript - 正确导出/导入 JS 项目的部分内容

转载 作者:行者123 更新时间:2023-11-30 21:11:12 25 4
gpt4 key购买 nike

我是第一次构建一个 npm 包(ES6 + Babel),我在将它们连接在一起以便最终用户可以导入时遇到了问题。

我的构建(输出)文件夹结构与 src 相同:

build
- index.js
- BaseClass.js
sublclasses
- SubClassA.js
- SubClassB.js

SubClassASubClassB 导入和扩展 BaseClass 并且都使用 module.exports 导出。入口点 index.js 只有两行:

import SubClassA from './subclasses/SubClassA'
import SubClassB from './subclasses/SubClassB'

package.jsonmain 字段设置为 ./build/index.js

将项目(或 npm 链接)安装到测试项目时,我写:

import SubClassA, SubClassB from 'my-package'

导入有效,但导入的类未定义。我已经尝试了更多方法来做到这一点,但没有奏效。

我应该如何正确操作?

编辑:将 index.js 更改为:

import SubClassA from './subclasses/SubClassA'
import SubClassB from './subclasses/SubClassB'

module.exports = SubClassA
module.exports = SubClassB

有点效果。 “有点”意味着如果我像这样在测试项目中导入这两个类:

import SubClassA, SubClassB from 'my-package'

然后做:

let sca = new SubClassA()

原来是SubClassB。如果我从导入中省略 SubClassB,它会正常工作。

编辑 2 - 解决方案:

按照下面评论中的说明,我更改了 index.js 文件,如下所示:

export { default as SubClassA } from './subclasses/SubClassA'
export { default as SubClassB } from './subclasses/SubClassB'

然后我像这样将它导入到测试项目中:

import { SubClassA, SubClassB } from 'my-project' and it worked.

最佳答案

问题是您没有从主文件中导出任何内容,
使用 es6 导入/导出语法,您可以直接将其导出:

export {default as SubclassA} from './subclasses/SubClassA'
export {default as SubclassB} from './subclasses/SubClassB'

然后你可以使用命名导入:

{SubClassA, SubClassB} from 'my-package'

关于javascript - 正确导出/导入 JS 项目的部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46117896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com