Как определить во время выполнения, используется ли версия 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 это вызовет неинициализированное исключение, но это не является предметом запроса здесь.

Заранее спасибо!

0 ответов

Другие вопросы по тегам