簡體   English   中英

的NodeJS。 包含模塊的正確方法

[英]Nodejs. Proper way to include modules

我有一個包含模塊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沒有定義”。

那么解決這個問題的最佳方法是什么? 顯然我無法在routes.js中重新包含puppeteer模塊所以我在routes.js中包含了server.js文件嗎? 或者這可能會導致模塊,變量和函數被實例化兩次? (有一次當server.js運行時 - 因為它是起點,有一次是在routes.js運行並重新運行server.js時)

const puppeteer = require('puppeteer'); 在routes.js中,這就是Node.js的工作方式。 每個模塊的行為都像單例,它首先執行,然后保存到內存中。 接下來只需返回指向此內存的指針(因此需要來自server.js的puppeteer和routes.js將指向同一個對象)。

需要server.js中的模塊

const puppeteer = require('puppeteer');

你必須在server.js中要求你的route.js文件,如下所述

require('./app/routes.js')(puppeteer); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM