gpt4 book ai didi

javascript - Node 。包含模块的正确方法

转载 作者:行者123 更新时间:2023-11-30 09:24:08 27 4
gpt4 key购买 nike

我有一个包含模块 puppeteer 的 server.js 文件。

const puppeteer = require('puppeteer');

我想在使用该模块的 routes.js 中运行一个函数。

async function getPic(arg) {
const browser = await puppeteer.launch(/*{headless: false}*/);
const page = await browser.newPage();
await page.goto(arg);
await page.setViewport({width: 1000, height: 500})
await page.screenshot({path: 'pic.png'});

await broswer.close();
}

当我尝试运行它时它不起作用,因为“puppeteer is not defined”。

那么解决这个问题的最佳方法是什么?显然我不能在 routes.js 中重新包含 puppeteer 模块那么我是否将 server.js 文件包含在 routes.js 中?或者这可能会导致模块、变量和函数被实例化两次?(一次 server.js 运行 - 因为它是起点,一次 routes.js 运行并重新运行 server.js)

最佳答案

在 routes.js 中写入 const puppeteer = require('puppeteer');,这就是 Node.js 的工作方式。每个模块的行为都像单例,它在第一次请求时执行,然后保存到内存中。接下来 require 只是返回指向这个内存的指针(因此 require server.js 和 routes.js 中的 puppeteer 将指向同一个对象)。

关于javascript - Node 。包含模块的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49901838/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com