当前位置: 代码迷 >> JavaScript >> 为 ES 模块做 require.resolve
  详细解决方案

为 ES 模块做 require.resolve

热度:148   发布时间:2023-06-07 13:47:58.0

我需要解析通过ES 模块,其方式类似于使用解析node.js CJS 模块的方式。 ES模块是否存在类似的东西?

例如,如果一个 Vue 包同时具有vue.runtime.common.jsvue.runtime.esm.js 我需要获取vue.runtime.esm.js路径。 如果包裹没有,我想知道。

只要import.meta.resolve保持实验性,您就可以使用来取回 ES 模块中的require.resolve功能,例如

import { createRequire } from 'module';

const require = createRequire(import.meta.url);
const pathName = require.resolve('vue.runtime.esm.js');

你可以使用import.meta.resolve()

这是一个示例

(async () => {
  const dependencyAsset = await import.meta.resolve('component-lib/asset.js');
})();

请注意,从节点14.3.0 ,您需要传入--experimental-import-meta-resolve才能使其工作

  相关解决方案