不能使用从TypeScript npm包中导入的多个内容。

我有一个小的基于TypeScript的npm包,其内容如下 tsconfig.json:

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "declaration": true,
        "outDir": "./dist",
        "strict": true,
        "resolveJsonModule": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
    },
    "include": [
        "src/**/*"
    ]
}

在其 src/index.ts它输出两个类,其中一个是默认的。

import StateMachine from './StateMachine';
import Chunk from './Chunk';

exports.StateMachine = StateMachine;
exports.Chunk = Chunk;

export default StateMachine;

它被编译成以下文件 dist/index.js:

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const StateMachine_1 = __importDefault(require("./StateMachine"));
const Chunk_1 = __importDefault(require("./Chunk"));
exports.StateMachine = StateMachine_1.default;
exports.Chunk = Chunk_1.default;
exports.default = StateMachine_1.default;

现在,在另一个我也在使用TypeScript的项目中,我想使用这两个导出的成员。所以我写道:”模块…没有导出的成员Chunk”。

import StateMachine, { Chunk } from '@foo/bar';

然而,我得到一个错误,说 “Module … has no exported member Chunk”。然而,默认的导出是没有问题的。这是 tsconfig.json 的其他项目。

{
    "compilerOptions": {
        "jsx": "react",
        "target": "es5",
        "module": "esnext",
        "noEmitOnError": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "noImplicitReturns": true,
        "noFallthroughCasesInSwitch": true,
        "moduleResolution": "node",
        "allowSyntheticDefaultImports": true,
        "resolveJsonModule": true,
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true,
        "stripInternal": false,
        "lib": [
            "dom",
            "dom.iterable",
            "esnext"
        ],
        "strict": true,
        "noImplicitAny": true,
        "declaration": false,
        "useDefineForClassFields": true,
        "skipLibCheck": true,
    },
    "include": [
        "source",
        "webpack.config.js"
    ]
}

我到底做错了什么?

解决方案:

解决方法很简单。不要手动设置 exports但是,可以在 src/index.ts:

export { StateMachine, Chunk }

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Laravel: 在邮件中发送用户名

2022-5-13 12:00:16

解决方案

Pycharm的Django`Run manage.py Task`控制台不能用于交互式命令?

2022-5-13 12:00:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索