我正在构建一个供内部使用的 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/