Невозможно использовать несколько импортов из пакета TypeScript npm - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть небольшой пакет npm на основе TypeScript со следующим 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, я хочу использовать оба этих экспортированных члена , Поэтому я пишу:

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

Однако я получаю сообщение об ошибке, говорящее, что «Модуль… не имеет экспортированного чанка участника». Экспорт по умолчанию, однако, найден без проблем. Это 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"
    ]
}

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 23 апреля 2020

Решение довольно простое. Не устанавливайте вручную exports, вместо этого используйте следующее в src/index.ts:

export { StateMachine, Chunk }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...