自制的nodejs静态资源服务器

之前启用静态资源服务器一直用的是python,对于本人来讲python属于必备,但新来的实习生啥的不一定喜欢python,于是就萌生了用node做一个静态资源服务器的想法,于是就做了下面这个一个npm包,使用也很简单全局安装,然后就可以用了!

npm i -g staticsourceserver //若是mac或者linux下可能需要加下sudo

安装完成后,在想要开启静态服务的目录下输入:

n-start-server //默认在8080端口启动,若是打算自定义端口的话,可在命令后面加一个数字参数,例如: n-start-server 9090

备注:代码写的比较短,只依赖了外部的mime-types模块,在本人mac电脑上完美跑通了,若是有其他问题,可根据以下的源码自行解决,也可以在github上留言,:

源码:

#!/usr/bin/env node
const http = require('http');
const fs = require('fs');
const child_process = require('child_process');
const path = require("path");
const mime = require('mime-types');
const port = process.argv[2] || 8080;
let currentPath = path.resolve('./');
let defaultContentType = 'text/plain;charset=utf-8'; //默认的Content-Type
http.createServer(function (request, response){
	//判断,若是url为目录,则列出目录下的文件,若是为文件,则直接读取文件内容展示
	let urlPath = decodeURIComponent(request.url).split("?")[0].replace(/\/+$/,'') || '';
	let filePath = (currentPath+urlPath).replace(/\/+$/,'');
	console.log(filePath);
	fs.lstat(filePath,function(err,stat){
		if(err){
			response.writeHead(200);
        	response.end(JSON.stringify({code :500,message:err}));
		}else{
			if(stat.isFile()){
				fs.readFile(filePath,function readData(err, data) {
					let contentType = mime.contentType(filePath.substr(filePath.lastIndexOf('/')+1)) ||  defaultContentType;
			        response.writeHead(200, {'Content-Type': contentType });
			        response.end(data);
			    });
			}else{
				fs.readdir(filePath,{encoding:'utf8'},function readData(err,files){
					if(err){
						response.writeHead(200);
        				response.end(JSON.stringify({code : 500,message:err}));
					}else{
						response.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
						let filesHtml = '';
						files.forEach(function(item){
							filesHtml = filesHtml + `<a href="${urlPath}/${item}" style="display:block;margin:10px;">${item}</a>`;
						})
						response.end(filesHtml);
					}
			    });
			}
		}
		
	}) 
}).listen(port, "127.0.0.1");
  
console.log(`Server running on port  ${port} .`)

感谢看完指鹤文章,希望指鹤的文章对您有所帮助。

闲暇时,指鹤喜欢写一些文章,部分发表在了豆瓣,若是您对此感兴趣,您可以点击下面连接支持下指鹤,指鹤在此表示感谢了

绝命笔记 一封匿名信引发的追寻 迷案追凶 量子危机