Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用addScriptTag时,如何评估类型为module的脚本的结果_Javascript_Node.js_Puppeteer_Es6 Modules - Fatal编程技术网

Javascript 当使用addScriptTag时,如何评估类型为module的脚本的结果

Javascript 当使用addScriptTag时,如何评估类型为module的脚本的结果,javascript,node.js,puppeteer,es6-modules,Javascript,Node.js,Puppeteer,Es6 Modules,我试图使用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))

我试图使用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
})();
此外,我如何评估模块的结果

我想我要寻找的是从模块中获取某种导出结果的方法。喜欢阅读默认导出。

也许您可以使用

在主脚本的末尾:

(异步()=>{
// ...
等待page.exposeFunction('useRes',(res)=>{
//使用res
等待浏览器关闭();
});
等待page.addScriptTag(/*…*/);
})();
在verbs.js的
结尾处:

/。。。
window.useRes(res);

我想您可以在页面上添加一个侦听器,在关闭之前等待加载内容:
page.on(“load”,wait browser.close})
而不是
wait browser.close()
?这很有趣。我要试试这个。但是仍然存在无法评估模块脚本结果的限制。addScriptTag返回void,并且似乎并没有从模块访问数据的明显方式。e、 阅读默认导出等。我确实这样做了,但我相信你也同意,它没有优雅的。我想将解决方案扩展到100多个不同的计算模块,因此它需要适当。在没有模块的情况下拥有多个函数文件,然后对其执行page.evaluate是一种优雅的做法,但无法通过导入访问其他库。这就是为什么我在研究这个方法,最后我找到了一个通过exposeFunction可伸缩的解决方案。我认为你把这件事带回家是公平的:)谢谢
import nlp from "https://unpkg.com/compromise@13.3.1/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