[ReactNative] Better error message for EADDRINUSE

This commit is contained in:
Alex Kotliarskyi 2015-04-07 15:52:52 -07:00
parent 645f2a73bc
commit f2d08f599b
1 changed files with 30 additions and 7 deletions

View File

@ -23,6 +23,7 @@ if (!fs.existsSync(path.resolve(__dirname, '..', 'node_modules'))) {
process.exit(); process.exit();
} }
var chalk = require('chalk');
var connect = require('connect'); var connect = require('connect');
var ReactPackager = require('./react-packager'); var ReactPackager = require('./react-packager');
var blacklist = require('./blacklist.js'); var blacklist = require('./blacklist.js');
@ -88,13 +89,35 @@ console.log('\n' +
' ===============================================================\n' ' ===============================================================\n'
); );
console.log('Looking for JS files in\n ', options.projectRoots.join('\n ')); console.log(
'Looking for JS files in\n ',
chalk.dim(options.projectRoots.join('\n ')),
'\n'
);
process.on('uncaughtException', function(e) { process.on('uncaughtException', function(e) {
console.error(e); if (e.code === 'EADDRINUSE') {
console.error(e.stack); console.log(
console.error('\n >>> ERROR: could not create packager - please shut down ' + chalk.bgRed.bold(' ERROR '),
'any existing instances that are already running.\n\n'); chalk.red('Packager can\'t listen on port', chalk.bold(options.port))
);
console.log('Most likely another process is already using this port');
console.log('Run the following command to find out which process:');
console.log('\n ', chalk.bold('lsof -n -i4TCP:' + options.port), '\n');
console.log('You can either shut down the other process:');
console.log('\n ', chalk.bold('kill -9 <PID>'), '\n');
console.log('or run packager on different port.');
} else {
console.log(chalk.bgRed.bold(' ERROR '), chalk.red(e.message));
var errorAttributes = JSON.stringify(e);
if (errorAttributes !== '{}') {
console.error(chalk.red(errorAttributes));
}
console.error(chalk.red(e.stack));
}
console.log('\nSee', chalk.underline('http://facebook.github.io/react-native/docs/troubleshooting.html'));
console.log('for common problems and solutions.');
process.exit(1);
}); });
var server = runServer(options, function() { var server = runServer(options, function() {