在 puppeteer 中加载和使用 JS 模块

dnm*_*nmh 6 javascript module node.js npm puppeteer

我正在构建一个供内部使用的 npm 包。它的功能之一是 DOM 解析,所以我需要在浏览器中加载它。我想使用 puppeteer 进行测试。

在文档中,我发现page.injectFile()用于本地 JS 文件。但是,我的文件是一个模块(我正在注入的文件已经转换为常规 JavaScript),并且在将其注入木偶操作者的浏览器页面后我不知道该怎么做。

到目前为止我的代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  page.injectFile('../build/MyModule')
    .then(result => console.log(result))
    .then(error => console.log(error));
})();
Run Code Online (Sandbox Code Playgroud)

我得到一个errorReferenceError: require is not defined因为我在MyModule. 我什至可以在 puppeteer 中使用这样的 JS 模块MyModule吗?如果是,那么获取和使用它的实例的正确方法是什么?

LeO*_* Li 2

我真的怀疑 puppeteer 能否实现这一目标,因为它只是无头 Chrome 的 Nodejs 驱动程序。

如果您需要在内部使用 cmd 自定义模块require(...),您可能需要使用模块捆绑器,例如webpack生成包含所有依赖项的捆绑文件,然后inject进入 puppeteer 页面。

只是我的2分钱。

  • 我知道我来晚了,但我正在尝试使用“browserify”生成一系列依赖项并注入到我的 puppeteer 页面中。关于如何注入这些依赖项有什么想法吗?我一直在尝试 `page.addScriptTag()` 但一无所获......谢谢 (2认同)