我正在尝试在我的 TypeScript CJS 项目中加载单个 ESM 模块。我找到的所有示例都是针对 JavaScript 的。
// example.ts
export const example = async () => {
const module = await import("esm-module");
return module.func
}
我的问题是 TSC 将 import 函数转换为 require,这破坏了一切。
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.example = void 0;
const example = async () => {
const module = await Promise.resolve().then(() => require("esm-module")); // Not desired
return module.func;
};
exports.example = example
我偶然发现了这个评论 - 不确定是否有更好的方法。至少
eval
使用时会持续刺痛,所以我没有看到任何掉毛问题。
// example.ts
type EsmModule = typeof import("esm-module");
export const example = async () => {
const module = await (eval('import("esm-module")') as Promise<EsmModule>);
return module.func
}
所有其他在线解决方案都错误的基本前提,并错误地尝试混淆
tsconfig.json
或 package.json