是否可以在chrome扩展中要求npm模块?

时间:2017-04-28 16:02:17

标签: google-chrome-extension npm

我试过了,但我有一个'require is not defined'错误。我找不到相关的信息,有人可以启发我的菜鸟吗?

2 个答案:

答案 0 :(得分:26)

这是可能的,但你必须要小心。尝试require()一个包意味着该节点将尝试在您的文件系统中找到它的文件。 Chrome扩展程序只能访问您在清单中声明的​​文件,而不是文件系统。

要解决这个问题,请使用像Webpack这样的模块捆绑器,它将生成一个包含require()所包含的所有包的所有代码的javascript文件。您必须为chrome扩展的每个组件生成一个单独的模块(例如,一个用于后台页面,一个用于内容脚本,一个用于弹出窗口),并在清单中声明每个生成的模块。

为避免尝试设置构建系统以使用require(),我建议从a boilerplate project开始。您可以查看my extension以了解我是如何做到的。

答案 1 :(得分:1)

不可能直接在chrome扩展中要求节点模块。但是,可以将节点应用程序和程序包捆绑到浏览器中以与扩展程序一起使用。有关详细信息,请参阅此处:Is it possible to develop Google Chrome extensions using node.js?