前言
大家好,我是倔强青铜三 。是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!
入口加载器
为了在构建时生成清单文件和其他文件,WXT 必须导入每个入口点以获取它们的选项,例如内容脚本的 matches
。对于 HTML 文件,这很容易。对于 JS/TS 入口点,过程则更为复杂。
在加载您的 JS/TS 入口点时,它们被导入到 NodeJS 环境中,而不是它们通常运行的 browser
环境中。这可能会导致在 NodeJS 环境中运行仅适用于浏览器的代码时常见的问题,例如缺少全局变量。
WXT 会执行几个预处理步骤,以尽量避免在此过程中出现错误:
- 使用
linkedom
提供一组小的浏览器全局变量(window
、document
等)。 - 使用
@webext-core/fake-browser
创建扩展程序期望的chrome
和browser
全局变量的伪造版本。 - 预处理 JS/TS 代码,移除
main
函数,然后从文件中摇树移除未使用的代码。
然而,这一过程并不完美。它没有设置浏览器中所有的全局变量,且 API 的行为可能有所不同。因此,您应避免在入口点的 main
函数之外使用浏览器或扩展程序 API!
提示
如果您在导入入口点时遇到错误,请运行 wxt prepare --debug
以查看此过程的更多详细信息。在调试时,WXT 会打印出预处理后的代码,以帮助您识别问题。
一旦环境已经通过 polyfill 补齐,且代码经过预处理后,入口加载器将负责导入您的代码,并从默认导出中提取选项。
最后感谢阅读!欢迎关注我,微信公众号 :
倔强青铜三
。欢迎点赞
、收藏
、关注
,一键三连!!!