
& chown -R pptruser:pptruser /package-lock.json & chown -R pptruser:pptruser /package.json \ & chown -R pptruser:pptruser /node_modules \ & chown -R pptruser:pptruser /home/pptruser \ & groupadd -r pptruser & useradd -r -g pptruser -G audio,video pptruser \ # same layer as npm install to keep re-chowned files from using up several hundred MBs more space # Install puppeteer so it's available in the container. # ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true

To work around this, try running without the flag: const browser = await puppeteer. Puppeteer passes -disable-extensions flag by default and will fail to launch when such policies are active. Some chrome policies might enforce running Chrome/Chromium with certain extensions. log( "CHILD: url received from parent process", url) Ĭonst browser = await puppeteer.# Chrome headless doesn't launch on Windows The code snippet below is a simple example of running parallel downloads with Puppeteer.Ĭonst downloadPath = path. 💡 If you are not familiar with how child process work in Node I highly encourage you to give this article a read. We can combine the child process module with our Puppeteer script and download files in parallel. Child process is how Node.js handles parallel programming.

We can fork multiple child_proces in Node. Our CPU cores can run multiple processes at the same time.

💡 Learn more about the single threaded architecture of node here Therefore if we have to download 10 files each 1 gigabyte in size and each requiring about 3 mins to download then with a single process we will have to wait for 10 x 3 = 30 minutes for the task to finish. It can only execute one process at a time. You see Node.js in its core is a single-threaded system. However, if you have to download multiple large files things start to get complicated. In this next part, we will dive deep into some of the advanced concepts.
