对ES模块执行require.resolve

时间:2019-03-04 06:33:48

标签: javascript es6-modules

我需要解析通过static import or function-like dynamic import导入的ES模块,其方式类似于使用require.resolve()解析node.js中的CJS模块。 ES模块是否存在类似的东西?

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

2 个答案:

答案 0 :(得分:1)

只要import.meta.resolve处于试验阶段,您就可以使用createRequire来获取ES模块中的require.resolve功能,例如

import { createRequire } from 'module';

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

答案 1 :(得分:0)

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

这是node docs

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

请注意,从节点--experimental-import-meta-resolve开始,您需要传递14.3.0才能起作用