Skip to content

Commit e4a8974

Browse files
authored
Merge pull request #382 from wbobeirne/fix-opener-error
Catch uncaught opener errors
2 parents e4b2677 + b0f717b commit e4a8974

3 files changed

Lines changed: 17 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ _Note: Gaps between patch versions are faulty, broken or test releases._
1313
## UNRELEASED
1414

1515
<!-- Add changelog entries for new changes under this section -->
16+
* **Bug Fix**
17+
* Prevent crashes when `openAnalyzer` was set to true in environments where there's no program to handle opening. ([#382](https://github.com/webpack-contrib/webpack-bundle-analyzer/pull/382) by [@wbobeirne](https://github.com/wbobeirne))
1618

1719
## 3.9.0
1820

src/utils.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const {inspect} = require('util');
22
const _ = require('lodash');
3+
const opener = require('opener');
34

45
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
56

@@ -51,3 +52,14 @@ exports.defaultTitle = function () {
5152

5253
return `${process.env.npm_package_name || 'Webpack Bundle Analyzer'} [${currentTime}]`;
5354
};
55+
56+
/**
57+
* Calls opener on a URI, but silently try / catches it.
58+
*/
59+
exports.open = function (uri, logger) {
60+
try {
61+
opener(uri);
62+
} catch (err) {
63+
logger.debug(`Opener failed to open "${uri}":\n${err}`);
64+
}
65+
};

src/viewer.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ const WebSocket = require('ws');
66
const _ = require('lodash');
77
const express = require('express');
88
const ejs = require('ejs');
9-
const opener = require('opener');
109
const mkdir = require('mkdirp');
1110
const {bold} = require('chalk');
1211

1312
const Logger = require('./Logger');
1413
const analyzer = require('./analyzer');
14+
const {open} = require('./utils');
1515

1616
const projectRoot = path.resolve(__dirname, '..');
1717
const assetsRoot = path.join(projectRoot, 'public');
@@ -85,7 +85,7 @@ async function startServer(bundleStats, opts) {
8585
);
8686

8787
if (openBrowser) {
88-
opener(url);
88+
open(url, logger);
8989
}
9090
});
9191
});
@@ -169,7 +169,7 @@ async function generateReport(bundleStats, opts) {
169169
logger.info(`${bold('Webpack Bundle Analyzer')} saved report to ${bold(reportFilepath)}`);
170170

171171
if (openBrowser) {
172-
opener(`file://${reportFilepath}`);
172+
open(`file://${reportFilepath}`, logger);
173173
}
174174
resolve();
175175
} catch (e) {

0 commit comments

Comments
 (0)