Как определить, запущен ли скрипт в модуле? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть программа с запасным вариантом для браузеров, которые не поддерживают веб-работников.Причина, по которой я это делаю, заключается в том, что я хочу развернуть ее на canvas, который не поддерживает веб-работников.Не веб-рабочий код может получить доступ к сценарию «mountainNoise.js», так как он использует импорт и экспорт ES6, однако, когда рабочий импортирует сценарий с помощью «importScripts ()», он выдает ошибку, поскольку объявления экспорта могут появляться только в модулях.

Есть ли способ определить, работает ли код в модуле?Моя главная задача - дублировать файл для поддержки обеих версий, но это нелепо, поскольку для одной строки кода требуется гораздо больше памяти.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я не уверен, сработает ли это для веб-работника, но это общий шаблон в библиотеках js, которые хотят поддерживать как node.js, так и браузеры.

if (
  typeof module !== 'undefined' &&
  typeof module.exports !== 'undefined'
) {
  module.exports = MyLib
  console.log('module.exports exists, import/export should be supported')
} else {
  window.MyLib = MyLib
  console.log('in a browser')
}
0 голосов
/ 16 октября 2018

Дело в том, что это основано на семантике языка, и дублирование может быть ответом.Я могу предложить попробовать поймать.Я знаю, что это не очень хорошее решение, но, возможно, лучше, чем дублирование.

...