javascript - 名为导入的打字稿未正确转译 - 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 将破坏的命名导入转换为单个变量?
有什么建议可以让它转译和正确运行吗?
解决方案
推荐阅读
- arrays - 在 VBA 中声明一个长度为 0 的字符串数组 - 不可能?
- python - Python3 循环,用户决策,从 1 到 7,仅 int,代码问题
- linux - 终端 cat 命令删除字符和制表符
- tensorflow - 量化感知(重新)训练 keras 模型
- c# - Visual Studio 2017 社区不允许 Console.WriteLine()
- c# - 从不在另一个列表中的列表中查找剩余时间
- asp.net-mvc - Asp.Net Core MVC,如何更改默认登录视图?
- reactjs - React & Bootstrap:如何让 PureComponent Card 中的输入框更新自身的其他实例?
- angularjs - 更新 MEAN 中的关联集合
- angularjs - 键入时Chrome的HTML输入类型时间问题