forked from github/docs
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
Latest commit
40 lines (35 loc) · 1.43 KB
/
Copy pathserver.js
File metadata and controls
40 lines (35 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require('./lib/check-node-version')
require('./lib/handle-exceptions')
require('./lib/feature-flags')
constexpress=require('express')
constportUsed=require('port-used')
constwarmServer=require('./lib/warm-server')
constport=Number(process.env.PORT)||4000
constapp=express()
require('./middleware')(app)
// prevent the app from starting up during tests
/* istanbul ignore next */
if(!module.parent){
// check that the development server is not already running
portUsed.check(port).then(asyncstatus=>{
if(status===false){
// If in a deployed environment, warm the server at the start
if(process.env.NODE_ENV==='production'){
// If in a true production environment, wait for the cache to be fully warmed.
if(process.env.HEROKU_PRODUCTION_APP||process.env.GITHUB_ACTIONS){
awaitwarmServer()
}
}
// workaround for https://github.com/expressjs/express/issues/1101
constserver=require('http').createServer(app)
server.listen(port,()=>console.log(`app running on http://localhost:${port}`))
.on('error',()=>server.close())
}else{
console.log(`\n\n\nPort ${port} is not available. You may already have a server running.`)
console.log('Try running `killall node` to shut down all your running node processes.\n\n\n')
console.log('\x07')// system 'beep' sound
process.exit(1)
}
})
}
module.exports=app