У меня такое ощущение, что это невозможно, но есть ли способ, чтобы импортированный сценарий es6 мог получить какой-либо путь к себе или, если не что иное, узнать домен, из которого он был загружен?
Что я sh пытается напечатать предупреждение, если пользователь включает скрипт с сайта моей библиотеки
// 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, если это возможно.