javascript - 在 puppeteer 中加载和使用 JS 模块

标签 javascript node.js npm module puppeteer

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

在文档中,我找到了用于本地 JS 文件的 page.injectFile()。但是,我的文件是一个模块(我正在注入(inject)的文件已经转译为常规 JavaScript),我不知道将其注入(inject) puppeteer 操纵者的浏览器页面后要做什么。

到目前为止我的代码:

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));
})();

我收到一个错误ReferenceError: require is not defined 因为我在MyModule 中使用require。 我什至可以在 puppeteer 中使用这样的 JS 模块吗?如果可以,获取 MyModule 实例并使用它的正确方法是什么?

最佳答案

我真的怀疑 puppeteer 能否实现这一点,因为它只是一个用于 headless chrome 的 nodejs 驱动程序。

如果您需要使用带有 cmd require(...) 的自定义模块,您可能需要使用像 webpack 这样的模块 bundler 来生成一个捆绑文件所有依赖项,然后 inject 到 puppeteer 页面。

只是我的 2 美分。

关于javascript - 在 puppeteer 中加载和使用 JS 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46565628/

相关文章:

node.js - 如何在 async.js 迭代器( Node )中添加延迟

javascript - 为什么我已经安装了错误查找模块

node.js - 使用 Node cross-env 的多个命令的语法(windows 和 linux)

javascript - 提示框一次又一次显示空白值

javascript - Google map API Javascript 和跟随标记

Javascript document.getElementById 似乎不起作用

node.js - AWS Lambda 随机超时

javascript - 如何通过 npm 安装谷歌地图?

linux - 我无法从 Linux 中删除 AWS-CDK

javascript - 如何从 Javascript 中的字符串列表创建映射(对象)