首页 > 解决方案 > 名为导入的打字稿未正确转译 - TypeError xxx 不是函数

问题描述

我给 Typescript 一个小项目的机会,我要么没有正确的 tsconfig 设置,要么 Typescript 只是以不同于我在 babel.js 世界中习惯的方式进行编译。

myPackage 是一个 npm 库。npm lib 和客户端项目都旨在使用所有最新的花里胡哨在 nodejs 8.x 下运行。

myPackage - index.ts:

export { default as updateTaskLog } from './updateTaskLog';
export { default as saveGitEvent } from './saveGitEvent';

myPackage 转译:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var updateTaskLog_1 = require("./updateTaskLog");
exports.updateTaskLog = updateTaskLog_1.default;
var saveGitEvent_1 = require("./saveGitEvent");
exports.saveGitEvent = saveGitEvent_1.default;

客户项目-run.ts:

import {
  saveGitEvent,
  updateTaskLog,
} from 'myPackage';

run.js 转译:

const myPackage_1 = require("myPackage"); // what? why is a destructured import transpiled to this?

...
const eventId = await myPackage_1.saveGitEvent(event); // TypeError: myPackage_1.saveGitEvent is not a function

两个项目都使用完全相同的 tsconfig.json 设置:

{
  "compilerOptions": {
    "target": "ES2017",
    "module": "commonjs",
    "noImplicitAny": false,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "preserveSymlinks": false,
    "types": [
      "node"
    ]
  }
}

为什么 Typescript 将破坏的命名导入转换为单个变量?

有什么建议可以让它转译和正确运行吗?

标签: javascripttypescript

解决方案


推荐阅读