可以重写为:是否可以在Chrome扩展中使用npm模块?
P粉217629009
P粉217629009 2023-08-22 23:09:19
0
2
444
<p>我尝试了,但是出现了一个“require is not defined”错误。我找不到关于这个错误的信息,请问有人可以给我解释一下吗?</p>
P粉217629009
P粉217629009

全部回复(2)
P粉006977956

2022年的更新答案

简短回答:是的,你可以要求/导入包。而不是自己费力地设置和配置像Webpack这样的打包工具(特别是如果你没有使用过它们),现在有一些构建工具可以用来创建Chrome扩展的样板代码:

使用它们的好处:

  • 新项目会初始化一个默认的项目文件结构,非常有帮助。
  • 它们支持现代JavaScript(ES6、ES2021),所以模块可以正常工作。
  • 它们已经集成并预配置了打包工具(我认为上述两种情况下都是Webpack)。因此,你不需要自己安装和配置任何工具。
  • 你可以像平常一样使用npm安装任何你需要的包/依赖。

然后,当然,让Chrome扩展的官方文档引导你完成剩下的部分。

P粉803444331

这是可能的,但你必须小心。尝试使用require()来加载一个包意味着Node将尝试在你的文件系统中定位它的文件。Chrome扩展只能访问你在清单中声明的文件,而不能访问你的文件系统。

为了解决这个问题,使用像Webpack这样的模块打包工具,它将生成一个包含通过require()引入的所有包的代码的单个JavaScript文件。你需要为你的每个Chrome扩展组件生成一个单独的模块(例如背景页、内容脚本、弹出窗口),并在清单中声明每个生成的模块。

为了避免尝试设置构建系统以使require()可用,我建议从一个样板项目开始。你可以查看我的扩展来看我是如何做的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板