Глобальная переменная в движке Google App Nodejs Puppeteer - PullRequest
7 голосов
/ 29 января 2020

Этот код работает локально, но при развертывании в Google App Engine я получил сообщение об ошибке «Не определен var Browser». Как лучше определить переменную браузера глобально? Моя цель - запустить браузер кукловода при запуске и использовать тот же экземпляр для открытия новой веб-страницы для каждого HTTP-запроса.

const puppeteer = require('puppeteer');
const express   = require('express');
const fs        = require('fs');
var port        = process.env.PORT || 80;
const app       = express();

app.get('/request',  async (req, res, next) => {

  console.log(browser)

   //using browser var here   <---
   // UnhandledPromiseRejectionWarning: ReferenceError: browser is not defined

});

app.listen(port, () => {
  console.log('Listening on PORT: ', port)
  setup()
});

const setup = async function(){

  console.log("Initializing Puppeteer...")
  global.browser = await puppeteer.launch({
      args: [
      '--no-sandbox', 
      '--disable-setuid-sandbox', 
      '--disable-dev-shm-usage=true',
      '--disable-accelerated-2d-canvas=true',
      '--disable-gpu', 
      ]
  });

browser.on('disconnected', setup);

console.log(`Started Puppeteer with pid ${browser.process().pid}`);
}

app.yml

runtime: nodejs10
env: standard
instance_class: F4_HIGHMEM
automatic_scaling:
  max_instances: 15
  min_instances: 0
  max_pending_latency: 10ms
  max_concurrent_requests: 1

1 Ответ

3 голосов
/ 13 апреля 2020

Мне удалось воспроизвести ваш сценарий использования в App Engine Standard:

const puppeteer = require('puppeteer');
const express   = require('express');
const fs        = require('fs');
var port        = process.env.PORT || 80;
const app       = express();

global.browser = null;

const setup = async function(){

  console.log("Initializing Puppeteer...")
  browser = await puppeteer.launch({
      args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage=true',
      '--disable-accelerated-2d-canvas=true',
      '--disable-gpu',
      ]
  });


browser.on('disconnected', setup);

}




app.get('/', (req, res) => {
  setup();
  console.log(`Started Puppeteer with pid ${browser.process().pid}`);
  res.status(200).send('Hello, world!').end();
});




// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {

  setup();
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});
// [END gae_node_request_example]

module.exports = app;

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...