我有一个具有备用功能的程序,用于不支持网络工作者的浏览器。我这样做的原因是因为我想将其部署到不支持Web Worker的cocoon的canvas +中。非Web工作者代码可以很好地访问脚本“ mountainNoise.js”,因为它使用ES6导入和导出,但是当工作者通过“ importScripts()”导入脚本时,由于导出声明只能出现在模块中,因此会引发错误。
是否可以检测代码是否在模块中运行?我主要关心的是复制文件以同时支持两个版本,但这太荒谬了,因为一行代码占用更多的内存。
答案 0 :(得分:0)
问题在于,这是语言语义的基础,重复可以 成为答案。我可以建议尝试捕获。我知道这不是一个好的解决方案,但可能比复制更好。
答案 1 :(得分:0)
我不确定这是否可以在Web Worker中使用,但这是同时支持Node.js和浏览器的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')
}