Как определить во время выполнения, используется ли версия cjs или mjs из опубликованного модуля в приложении, которое ее использует?
Я пытаюсь использовать Jest для имитации промежуточного программного обеспечения из созданного мной шаблона модуля узла, который экспортирует версии cjs и mjs, назначенные внутри подпапок, названных в честь этих типов.
package.json отрывок из опубликованного модуля:
"name": "@ies/node-api-template",
"main": "./lib/cjs/index.js",
"module": "./lib/esm/index.js",
Я пытаюсь определить во время выполнения, как узнать, используется ли реализация cjs или mjs? Кроме того, мне интересно, из-за совместимости, если узел прямо сейчас всегда будет опираться на "основной", а не на модуль, если он каким-то образом не настроен... я неправильно структурирую это?
const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = (relativePath: string) =>
path.resolve(appDirectory, relativePath);
const appNodeModules = resolveApp('node_modules');
const moduleName = "@ies/node-api-template" // get this from package.json if backfilled to the module itself
const moduleType = "cjs"; // how do I determine if cjs or mjs is used? <--- THIS QUESTION
jest.mock(`${appNodeModules}/${moduleName}/lib/${moduleType}/...remaining path", () => {} ....
Из-за подъема jest.mock это вызовет неинициализированное исключение, но это не является предметом запроса здесь.
Заранее спасибо!