-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnode.js
75 lines (67 loc) · 2.04 KB
/
node.js
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//console.log('hallor ');
//const Person=require('./Person');
//const person1= new Person('npm',25);
//person1.greeting();
/*
const Logger =require('./logger');
const logger= new Logger();
logger.on('massage',data =>console.log('called listener',data));
logger.log('hallo world');
*/
const http =require('http');
const path= require('path');
const fs=require('fs');
const server =http.createServer((req,res)=>{
/*if(req.url==='/'){
fs.readFile(
path.join(__dirname,'public','index.html'),
(err,content)=>{
if(err)throw(err);
res.writeHead(200,{'content-type':'text/html'});
res.end(content)
})
}*/
let filepath= path.join(__dirname,'public',
req.url==='/'?'index.html':req.url)
let extname=path.extname(filepath);
//inital content type
let contentType='text/html';
//check the ext
switch(extname){
case '.js':
contentType='text/js';
break;
case '.css':
contentType='text/css';
break;
case '.json':
contentType='text/json';
break;
case '.png':
contentType='text/png';
break;
}
//readfile
fs.readFile(filepath,(err,content)=>{
if(err){
if(err.code=='ENOENT'){
//page not found
fs.readFile(path.join(__dirname,'public','404.html'),
(err,content)=>{
res.writeHead(200,{'content-Type':'text/html'});
res.end(content,'utf8');
})
}else{
//some server error
res.writeHead(500);
res.end(`server error ${err.code}`);
}
}else{
//succuss
res.writeHead(200,{'content-Type':contentType});
res.end(content,'utf-8');
}
});
});
const PORT=process.env.PORT||5000;
server.listen(PORT,()=>console.log(`server running on port ${PORT}`));