我正在尝试使用 addScriptTag 来使用页面上的某些模块。
(async () => {
const browser = await launch();
const page = await browser.newPage();
page.on("console", (c) => console.log(c.text()));
page.on("error", (c) => console.error(c.message));
await page.goto("https://example.com");
await page.addScriptTag({
path: resolve(__dirname, "verbs.js"),
type: "module"
});
await browser.close(); // <==== Closes before "verbs.js" finishes doing it thing
})();
动词.js:
import nlp from "https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="73101c1e03011c1e1a00163342405d405d42" rel="noreferrer noopener nofollow">[email protected]</a>/builds/compromise.mjs";
const selectors = "p, h1, h2, h3, h4, h5, h6";
const links = [...document.querySelectorAll(selectors)];
const pageText = links.map((node) => node.textContent).join("");
const doc = nlp(pageText);
const res = doc
.verbs()
.json()
.map((noun) => noun.text);
export default res; // I need a way of accessing res from node context
另外,我如何评估模块的结果?
我想我正在寻找一种从模块获取某种导出结果的方法。喜欢阅读它默认导出。
最佳答案
也许你可以使用page.exposeFunction()
?
主脚本末尾:
(async () => {
// ...
await page.exposeFunction('useRes', (res) => {
// use res
await browser.close();
});
await page.addScriptTag(/* ... */);
})();
在verbs.js
末尾:
// ...
window.useRes(res);
关于javascript - 使用 addScriptTag 时如何评估带有类型模块的脚本结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63072779/