导入脚本自身获得 URL/path?

import scripts getting a URL/path to itself?

我觉得这是不可能的,但是有没有办法让 es6 导入的脚本获得任何类型的自身路径,或者如果不知道它是从哪个域下载的?

我想要完成的是在用户包含来自我的图书馆站点的脚本时打印警告

// usercode.js
import foolib from 'https://foolib.org/dist/foolib.js';
// foolib.js

if (location.hostname !== 'foolib.org' && selfurl.hostname === 'foolib.org') {
  console.warn(`referencing this code directly from foo.com is garanteed to break.
     Use your own copy or a versioned CDN`);
}

请注意,对于脚本标签,没有正式的方法,但脚本可以扫描所有现有的脚本标签,并查看是否在它关心的域上存在对脚本的引用

if (location.hostname !== 'foolib.org' &&
    [...document.querySelectorAll('script')].findIndex(
        s => s.src === 'https://foolib.org/dist/foolib.js'
    ) >= 0) {
  console.warn('...');
}

如果可能的话,我正在尝试找到一种对 es6 模块执行相同操作的方法。

您可以从 import.meta 对象访问此信息:

<script type="module">
  console.log( import.meta );
</script>