Skip to content

Commit de89e75

Browse files
committed
check browser closed
1 parent cbcad51 commit de89e75

File tree

1 file changed

+42
-26
lines changed

1 file changed

+42
-26
lines changed

src/starter-kit/setup.js

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,30 @@ const config = require('./config');
88
exports.getBrowser = (() => {
99
let browser;
1010
return async () => {
11-
if (typeof browser === 'undefined') {
11+
if (typeof browser === 'undefined' || !await isBrowserAvailable(browser)) {
1212
await setupChrome();
1313
browser = await puppeteer.launch({
1414
headless: true,
1515
executablePath: config.executablePath,
1616
args: config.launchOptionForLambda,
1717
dumpio: !!exports.DEBUG,
1818
});
19-
debugLog(`launch done: ${await browser.version()}`);
19+
debugLog(async (b) => `launch done: ${await browser.version()}`);
2020
}
2121
return browser;
2222
};
2323
})();
2424

25+
const isBrowserAvailable = async (browser) => {
26+
try {
27+
await browser.version();
28+
} catch (e) {
29+
debugLog(e); // not opened etc.
30+
return false;
31+
}
32+
return true;
33+
};
34+
2535
const setupChrome = async () => {
2636
if (!await existsExecutableChrome()) {
2737
if (await existsLocalChrome()) {
@@ -52,34 +62,40 @@ const existsExecutableChrome = () => {
5262
};
5363

5464
const setupLocalChrome = () => {
55-
return new Promise((resolve, reject) => {
56-
fs.createReadStream(config.localChromePath)
57-
.on('error', (err) => reject(err))
58-
.pipe(tar.x({
59-
C: config.setupChromePath,
60-
}))
61-
.on('error', (err) => reject(err))
62-
.on('end', () => resolve());
63-
});
65+
return new Promise((resolve, reject) => {
66+
fs.createReadStream(config.localChromePath)
67+
.on('error', (err) => reject(err))
68+
.pipe(tar.x({
69+
C: config.setupChromePath,
70+
}))
71+
.on('error', (err) => reject(err))
72+
.on('end', () => resolve());
73+
});
6474
};
6575

6676
const setupS3Chrome = () => {
67-
return new Promise((resolve, reject) => {
68-
const params = {
69-
Bucket: config.remoteChromeS3Bucket,
70-
Key: config.remoteChromeS3Key,
71-
};
72-
s3.getObject(params)
73-
.createReadStream()
74-
.on('error', (err) => reject(err))
75-
.pipe(tar.x({
76-
C: config.setupChromePath,
77-
}))
78-
.on('error', (err) => reject(err))
79-
.on('end', () => resolve());
80-
});
77+
return new Promise((resolve, reject) => {
78+
const params = {
79+
Bucket: config.remoteChromeS3Bucket,
80+
Key: config.remoteChromeS3Key,
81+
};
82+
s3.getObject(params)
83+
.createReadStream()
84+
.on('error', (err) => reject(err))
85+
.pipe(tar.x({
86+
C: config.setupChromePath,
87+
}))
88+
.on('error', (err) => reject(err))
89+
.on('end', () => resolve());
90+
});
8191
};
8292

8393
const debugLog = (log) => {
84-
if (config.DEBUG) console.log(log);
94+
if (config.DEBUG) {
95+
let message = log;
96+
if (typeof log === 'function') message = log();
97+
Promise.resolve(message).then(
98+
(message) => console.log(message)
99+
);
100+
}
85101
};

0 commit comments

Comments
 (0)