我正在创建一个Chrome扩展程序,用于对网络快照进行截图。
我已经创建了javascript和HTML文件。我正在使用node_modules
,它已保存在同一项目文件夹中。当我在控制台(node scripts/screeCapture.js
)中运行该程序时,一切都可以正常运行,并且截图被保存并保存到我的计算机中。
但是,我无法通过扩展名使用它,它总是说未定义'required',这意味着node
无法被程序识别。我该如何解决?
谢谢!
答案 0 :(得分:1)
Node.js并非基于浏览器的系统。您无法将Node.js“加载”到浏览器中。
require
是Node模块系统的一部分(它是CommonJS模块系统的一种变体,它也使用require
)。浏览器不使用该模块系统。直到最近,他们还没有使用任何模块系统。最近,它们中的大多数都支持ES2015的模块(使用import
和export
关键字而不是require
函数和module.exports
对象)。
对于Chrome扩展程序,请使用诸如Webpack或Rollup之类的捆绑器。
您可能会对最近发生的事情感到困惑,因为面向浏览器的模块(以及中性的模块,可以在浏览器或Node.js中使用)是通过npm
发布的,该文件原为软件包仅适用于Node.js模块的管理器。但是,尽管它们以这种方式发布,但这并不是因为这些模块希望Node.js位于浏览器中。
但是:
...一切正常,并截图并保存到我的计算机中。
用于获取网站屏幕截图的Node.js模块不太可能在浏览器或浏览器扩展机制中运行(尽管可以通过 来检测其环境)。您正在使用的模块可能会启动无头浏览器,检索页面,然后对其进行虚拟渲染以生成屏幕截图。在Node.js和浏览器中,执行此操作的机制完全不同。