mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
* 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
This commit is contained in:
parent
ec2c8c6784
commit
2f7d743050
14
bin/next-dev
14
bin/next-dev
|
@ -2,9 +2,10 @@
|
||||||
import 'source-map-support/register'
|
import 'source-map-support/register'
|
||||||
import { resolve, join } from 'path'
|
import { resolve, join } from 'path'
|
||||||
import parseArgs from 'minimist'
|
import parseArgs from 'minimist'
|
||||||
import { existsSync } from 'fs'
|
import { existsSync, readFileSync } from 'fs'
|
||||||
import Server from '../server'
|
import Server from '../server'
|
||||||
import { printAndExit } from '../lib/utils'
|
import { printAndExit } from '../lib/utils'
|
||||||
|
import pkgUp from 'pkg-up'
|
||||||
|
|
||||||
process.env.NODE_ENV = process.env.NODE_ENV || 'development'
|
process.env.NODE_ENV = process.env.NODE_ENV || 'development'
|
||||||
|
|
||||||
|
@ -61,6 +62,15 @@ srv.start(argv.port)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
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)
|
console.error(err)
|
||||||
process.exit(1)
|
}
|
||||||
|
process.nextTick(() => process.exit(1))
|
||||||
})
|
})
|
||||||
|
|
|
@ -70,6 +70,7 @@
|
||||||
"mkdirp-then": "1.2.0",
|
"mkdirp-then": "1.2.0",
|
||||||
"mz": "2.6.0",
|
"mz": "2.6.0",
|
||||||
"path-match": "1.2.4",
|
"path-match": "1.2.4",
|
||||||
|
"pkg-up": "1.0.0",
|
||||||
"react": "15.4.2",
|
"react": "15.4.2",
|
||||||
"react-dom": "15.4.2",
|
"react-dom": "15.4.2",
|
||||||
"react-hot-loader": "3.0.0-beta.6",
|
"react-hot-loader": "3.0.0-beta.6",
|
||||||
|
|
|
@ -119,10 +119,10 @@ export default class Server {
|
||||||
await this.prepare()
|
await this.prepare()
|
||||||
this.http = http.createServer(this.getRequestHandler())
|
this.http = http.createServer(this.getRequestHandler())
|
||||||
await new Promise((resolve, reject) => {
|
await new Promise((resolve, reject) => {
|
||||||
this.http.listen(port, (err) => {
|
// This code catches EADDRINUSE error if the port is already in use
|
||||||
if (err) return reject(err)
|
this.http.on('error', reject)
|
||||||
resolve()
|
this.http.on('listening', () => resolve())
|
||||||
})
|
this.http.listen(port)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue