获取当前ES模块的文件名

isa*_*sar 13 javascript ecmascript-6 es6-modules

是否可以获得当前 JavaScript模块的文件名?

// item.mjs
function printName() {
  console.log(...);  // >> item or item.mjs
};
Run Code Online (Sandbox Code Playgroud)

如果没有,为什么不呢?沙箱等

Ber*_*rgi 17

您正在寻找(建议的import.meta元属性。该对象到底包含什么取决于环境,但在浏览器中您可以使用

// item.mjs
function printName() {
  console.log(import.meta.url);  // https://domain.example/js/item.mjs
}
Run Code Online (Sandbox Code Playgroud)

您可以通过使用URL接口解析文件名来提取文件名,例如

console.log(new URL(import.meta.url).pathname.split("/").pop())
Run Code Online (Sandbox Code Playgroud)