将节点加载到js文件中

时间:2018-12-29 09:10:46

标签: javascript html node.js

我正在创建一个Chrome扩展程序,用于对网络快照进行截图。

我已经创建了javascript和HTML文件。我正在使用node_modules,它已保存在同一项目文件夹中。当我在控制台(node scripts/screeCapture.js)中运行该程序时,一切都可以正常运行,并且截图被保存并保存到我的计算机中。

但是,我无法通过扩展名使用它,它总是说未定义'required',这意味着node无法被程序识别。我该如何解决?

谢谢!

1 个答案:

答案 0 :(得分:1)

Node.js并非基于浏览器的系统。您无法将Node.js“加载”到浏览器中。

require是Node模块系统的一部分(它是CommonJS模块系统的一种变体,它也使用require)。浏览器不使用该模块系统。直到最近,他们还没有使用任何模块系统。最近,它们中的大多数都支持ES2015的模块(使用importexport关键字而不是require函数和module.exports对象)。

对于Chrome扩展程序,请使用诸如Webpack或Rollup之类的捆绑器。

您可能会对最近发生的事情感到困惑,因为面向浏览器的模块(以及中性的模块,可以在浏览器或Node.js中使用)是通过npm发布的,该文件原为软件包仅适用于Node.js模块的管理器。但是,尽管它们以这种方式发布,但这并不是因为这些模块希望Node.js位于浏览器中。

但是

  

...一切正常,并截图并保存到我的计算机中。

用于获取网站屏幕截图的Node.js模块不太可能在浏览器或浏览器扩展机制中运行(尽管可以通过 来检测其环境)。您正在使用的模块可能会启动无头浏览器,检索页面,然后对其进行虚拟渲染以生成屏幕截图。在Node.js和浏览器中,执行此操作的机制完全不同。