Я работал над проектом TypeScript (для среды NodeJs), поэтому я использовал синтаксис модуля ES для импорта и экспорта.Используя TSC с "module": "commonjs", "esModuleInterop": true
, создается много стандартного кода, такого как:
var __importStar = (this && this.__importStar) || function (mod) {
// omitted
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = require("path"); // renamed identifier
const pug_1 = __importDefault(require("./template/pug"));
pug_1.default(...) // use of .default
Поэтому мой вопрос заключается в том, почему мы не можем просто преобразовать импорт / экспорт ESM в простые вызовы require
для NodeJ изачем нужен этот стандартный код и переименование идентификатора?
Например, почему следующие преобразования не могут быть выполнены простым поиском и заменой (с регулярным выражением или некоторым анализом):
import * as path from "path";
// const path = require("path");
import { resolve } from "path";
// const { resolve } = require("path");
export default class MyClass {...}
// module.exports = class MyClass {...}
export class MyClass {...}
// module.exports.MyClass = class MyClass {...}