【问题标题】:Is it possible to require npm modules in a chrome extension ?是否可以在 chrome 扩展中要求 npm 模块?
【发布时间】:2021-10-19 03:08:31
【问题描述】:

我试过了,但出现“未定义要求”错误。我找不到这方面的信息,请问有人可以启发我的菜鸟吗?

【问题讨论】:

    标签: google-chrome-extension npm


    【解决方案1】:

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

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

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

    【讨论】:

    • 只是一个小问题:如果您只在其中一个组件中使用该模块,则不需要为弹出窗口和内容脚本生成单独的模块。我唯一的要求是在我的后台脚本中,因为这是持续存在的,我使用消息传递系统从后台脚本中询问我需要的信息,我鼓励人们也这样做(除非您在弹出窗口中需要信息/内容脚本无法序列化)。
    • 您的扩展 saka-key 是我正在寻找的模板。谢谢。@Eejdoowad
    【解决方案2】:

    不可能在 chrome 扩展中直接要求节点模块。但是,可以将节点应用程序和包捆绑到浏览器中以与您的扩展一起使用。更多信息请看这里:Is it possible to develop Google Chrome extensions using node.js?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-19
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2018-04-02
      相关资源
      最近更新 更多