Skip to content

Commit

Permalink
add pretty message if port already in use(#927) (#932)
Browse files Browse the repository at this point in the history
* add pretty message if port already use(#927)

* fix console async nature

* fix linter

* clean callbacks code

* Check package.json for the startup script

* fix path to package

* omit callback

* remove extra check, code execute in try block

* + reason for change start listen port of node http

* remove extra code for search package
  • Loading branch information
dex157 authored and timneutkens committed Feb 1, 2017
1 parent ec2c8c6 commit 2f7d743
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 7 deletions.
16 changes: 13 additions & 3 deletions bin/next-dev
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
import 'source-map-support/register'
import { resolve, join } from 'path'
import parseArgs from 'minimist'
import { existsSync } from 'fs'
import { existsSync, readFileSync } from 'fs'
import Server from '../server'
import { printAndExit } from '../lib/utils'
import pkgUp from 'pkg-up'

process.env.NODE_ENV = process.env.NODE_ENV || 'development'

Expand Down Expand Up @@ -61,6 +62,15 @@ srv.start(argv.port)
}
})
.catch((err) => {
console.error(err)
process.exit(1)
if (err.code === 'EADDRINUSE') {
let errorMessage = `Port ${argv.port} is already in use.`
const pkgAppPath = pkgUp.sync('.')
const appPackage = JSON.parse(readFileSync(pkgAppPath, 'utf8'))
const nextScript = Object.entries(appPackage.scripts).find(scriptLine => scriptLine[1] === 'next')
if (nextScript) errorMessage += `\nUse \`npm run ${nextScript[0]} -- -p <some other port>\`.`
console.error(errorMessage)
} else {
console.error(err)
}
process.nextTick(() => process.exit(1))
})
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
"mkdirp-then": "1.2.0",
"mz": "2.6.0",
"path-match": "1.2.4",
"pkg-up": "1.0.0",
"react": "15.4.2",
"react-dom": "15.4.2",
"react-hot-loader": "3.0.0-beta.6",
Expand Down
8 changes: 4 additions & 4 deletions server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,10 @@ export default class Server {
await this.prepare()
this.http = http.createServer(this.getRequestHandler())
await new Promise((resolve, reject) => {
this.http.listen(port, (err) => {
if (err) return reject(err)
resolve()
})
// This code catches EADDRINUSE error if the port is already in use
this.http.on('error', reject)
this.http.on('listening', () => resolve())
this.http.listen(port)
})
}

Expand Down

0 comments on commit 2f7d743

Please sign in to comment.