没有 require.resolve
(async () => {
const dependencyAsset = await import.meta.resolve('component-lib/asset.css');
})();import.meta.resolve 还接受第二个参数,它是从中解析的父模块:
(async () => {
//
await import.meta.resolve('./dep', import.meta.url);
})();Former use cases relying on require.resolve to determine the resolved path
of a module can be supported via import.meta.resolve, which is experimental
and supported via the --experimental-import-meta-resolve flag:
(async () => {
const dependencyAsset = await import.meta.resolve('component-lib/asset.css');
})();import.meta.resolve also accepts a second argument which is the parent module
from which to resolve from:
(async () => {
// Equivalent to import.meta.resolve('./dep')
await import.meta.resolve('./dep', import.meta.url);
})();This function is asynchronous because the ES module resolver in Node.js is asynchronous. With the introduction of Top-Level Await, these use cases will be easier as they won't require an async function wrapper.