代码如下:
// 导入http、fs、path模块
const http = require('http')
const fs = require('fs')
const path = require('path')
// 创建服务器
const server = http.createServer((req, res) => {
// 获取请求地址
let url = req.url
// 获取要请求文件的路径
let pathUrl = path.join(__dirname, '/双开门效果', url)
// 获取文件的扩展名
let extname = path.extname(url)
// 读取指定文件内容
fs.readFile(pathUrl, (err, data) => {
if (err) return console.log("读取文件失败:", err);
// 判断是什么类型的文件并设置什么类型的响应头
if (extname == '.jpg') {
res.setHeader('content-type', 'image/jpg')
} else if (extname == '.css') {
res.setHeader('content-type', 'text/css;charset=utf8')
} else if (extname == '.js') {
res.setHeader('content-type', 'appliaction/javascript')
} else {
res.setHeader('content-type', 'text/html;charset=utf8')
}
// 内容响应到客户端
res.end(data)
})
})
// 创建端口8005监听并开启服务器
server.listen(8005, () => {
console.log('服务器请求成功: http://127.0.0.1:8005');
})
这样虽然可以响应到文件内容,但是也会 出现找不到favicon.ico文件 错误
这里客户端请求服务器时,使用req.url接收的路径会有两种情况:
1. 获取 路径的 /
2.获取 路径的 favicon.ico
"/"代表用户的目标url地址为web应用程序的根目录.
URL地址问浏览器为页面在收藏夹中的显示图标.默认为favicon.ico.而自动发出的请求的目标URL地址.
这里则需要屏蔽掉 /favicon.ico , 否则会找不到这个文件而报错
// 屏蔽掉favicon.ico路径
if (extname != '.ico') { // 只需要加个判断就行了
// 读取指定文件内容
fs.readFile(pathUrl, (err, data) => {
if (err) return console.log("读取文件失败:", err);
// 判断是什么类型的文件并设置什么类型的响应头
if (extname == '.jpg') {
res.setHeader('content-type', 'image/jpg')
} else if (extname == '.css') {
res.setHeader('content-type', 'text/css;charset=utf8')
} else if (extname == '.js') {
res.setHeader('content-type', 'appliaction/javascript')
} else {
res.setHeader('content-type', 'text/html;charset=utf8')
}
// 内容响应到客户端
res.end(data)
})