diff --git a/lib/util/version.js b/lib/util/version.js index 3e8af90c01..932866bc69 100644 --- a/lib/util/version.js +++ b/lib/util/version.js @@ -20,10 +20,12 @@ function detectReactVersion() { const react = require(reactPath); // eslint-disable-line import/no-dynamic-require return react.version; } catch (e) { - if (!warnedForMissingVersion && e.code === 'MODULE_NOT_FOUND') { - error('Warning: React version was set to "detect" in eslint-plugin-react settings, ' + + if (e.code === 'MODULE_NOT_FOUND') { + if (!warnedForMissingVersion) { + error('Warning: React version was set to "detect" in eslint-plugin-react settings, ' + 'but the "react" package is not installed. Assuming latest React version for linting.'); - warnedForMissingVersion = true; + warnedForMissingVersion = true; + } return '999.999.999'; } throw e; diff --git a/tests/util/version.js b/tests/util/version.js index 5eacb4633f..ea8a09b490 100644 --- a/tests/util/version.js +++ b/tests/util/version.js @@ -44,6 +44,15 @@ describe('Version', () => { ]; }); + it('warns only once for failure to detect react ', () => { + assert.equal(versionUtil.testReactVersion(context, '999.999.999'), true); + assert.equal(versionUtil.testReactVersion(context, '999.999.999'), true); + + expectedErrorArgs = [ + ['Warning: React version was set to "detect" in eslint-plugin-react settings, but the "react" package is not installed. Assuming latest React version for linting.'] + ]; + }); + it('assumes latest version if flow-bin is not installed', () => { assert.equal(versionUtil.testFlowVersion(context, '999.999.999'), true);