首页 > 编程语言 >nodejs 搭建静态服务器

nodejs 搭建静态服务器

时间:2023-01-09 16:44:51浏览次数:63  
标签:文件 nodejs url index server path 服务器 response 搭建

这两天又捡了捡 vue,忽然觉得 build 一下是有必要的,那想检验 build 是否成功,就需要个服务端来验证一下,apache tomcat 、ngnix 就不说了,直接整一个更简单的。

首先还是百度了一番,最后找了个靠谱的尝试了一下,不过这个文章多少还是有些问题,改了改差不多能用了。

(参考:https://cloud.tencent.com/developer/article/1728471?from=15425

1、返回文件内容相同问题:

 

他这写死的文件地址,不管请求多少个文件,返回的内容始终都是 static 下的  index.html 的内容。

这里把文件路径和返回文件调整了一下,这样,请求的是哪个文件,返回的即是哪个文件:

 

 

2、加载 js 文件报错的问题:

 

 原因就是返回的文件的 MIME 类型是空的,这里需要安装一下 mime 模块,用来获取资源类型。

 

然后在返回文件时,获取资源类型,再设置好 Content-Type 即可。

 

3、如果请求不到文件,server 会直接停掉,这里增加了个重定向,如果文件找不到,就直接回到 index.html 

 

4、优化了下文件地址关联,如果放在 build 出来的目录中,每次 build 后 dist 文件都会被删除重新生成,那 server.js 每次都需要重新复制过去,

这里直接把 server.js 挪到了上一级,并标记了文件地址为 dist。

 

代码记录(server.js):

var 
    http = require('http'),
    fs = require('fs'),
    url = require('url'),
    path = require('path'),
    // 资源类型模块
    mime = require('mime');
    
// 文件夹路径
var dirPath = [__dirname, 'dist'];
// 从命令行参数获取root目录,默认是当前目录;当前 index.html 入口
var root = path.join(...dirPath, 'index.html');

//创建服务器
var server = http.createServer(function(request, response){
    //获得ur的path 类似'/css/index.css'
    var pathName = url.parse(request.url).pathname;
    //获得对应的本地文件路径 类似’static/css/index.css‘
    var filePath = path.join(root);
    //获取文件状态
    console.log(filePath);
    fs.stat(filePath, function (err, stats) {
        if (!err && stats.isFile()) {
            // 没有出错并且文件存在:
            console.log('200 ' + request.url);
            // 通过路径返回资源类型
            let type = mime.getType(request.url);
            if (type) {
                // 发送200响应:
                response.writeHead(200, {"Content-Type": type + ';charset=UTF-8'});
                // 将文件流导向response:
                fs.createReadStream(path.join(...dirPath,  request.url)).pipe(response);
            } else {
                // 重定向为 root
                fs.createReadStream(root).pipe(response);
            }
        } else {
            // 出错了或者文件不存在:
            console.log('404 ' + request.url);
            // 发送404响应:
            response.writeHead(404);
            response.end('404 Not Found');
        }
    });
});
server.listen(888);
console.log('Server is running at http://127.0.0.1:888/');

 

标签:文件,nodejs,url,index,server,path,服务器,response,搭建
From: https://www.cnblogs.com/guofan/p/17037490.html

相关文章

  • ElasticSearch集群搭建
    一、调整内核参数vim/etc/sysctl.confvm.max_map_count=262144vim/etc/security/limits.confsoftnofile65536hardnofile65536sysctl-p二、解压文件tar-z......
  • dell 服务器服务编码查询方法(Win & linux)版本):
    ForWindows(win2003winXP以上版本):命令1:wmicbiosgetserialnumber(获取ST)命令2:wmiccsproductgetname,identifyingnumber(获取ST和机型)#通过cmd命令查看内存型号 wmi......
  • 学习笔记——在IDEA中创建Maven版的web工程;框架;Mybatis简介;搭建Mybatis框架步骤
    2023-01-09 一、在IDEA中创建Maven版的web工程(1)步骤:①创建一个maven模块,命名为“maven_web_end”,之后需要创建web工程的目录。在“maven_web_end.src.main”下创建“we......
  • minio kubernetes快速搭建
    pod.yamlapiVersion:v1kind:Podmetadata:labels:app:minioname:minionamespace:minio-dev#Changethisvaluetomatchthenamespacemetadata......
  • Docker搭建LNMP+wordpress
    一、项目模拟1.项目环境公司在实际的生产环境中,需要使用Docker技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工......
  • 修改时间服务器-域控环境
    首先当前大部分公司都采用了域控环境,意味着在时间和日期那里是看不到windows时间选项的。此时最好通过域控策略或者单纯的dos命令来更改域计算机时间同步服务器信息一......
  • 服务器中了 xmrig 挖矿病毒,杀进程后还得删除定时任务
    最近收到一条阿里云服务器发出的短信警告,说我们正在利用服务器挖矿,必须立即停止挖矿活动。SSH连上服务器后,使用top-c命令,发现有个mxrig进程几乎把服务器CPU资源占......
  • 搭建windows下的android开发环境
    搭建windows下面的android开发环境一般需要以下工具或软件:1. ​​jdk​​(要求jdk5或jdk6)2. ​​eclipse​​​(要求eclipse3.4或eclipse3.5)(​​汉化包下载​​)3. ......
  • 【晶振】NTP网络校时服务器(卫星时钟)电路里的主心跳
    【晶振】NTP网络校时服务器(卫星时钟)电路里的主心跳【晶振】NTP网络校时服务器(卫星时钟)电路里的主心跳京准电子科技官微——ahjzsz晶振是NTP网络校时服务器(卫星时钟)电路......
  • vue项目部署到IIS服务器
    步骤一:复制文件把build之后的文件(dist文件夹)拷贝到IIS存放网站文件的目录步骤二:在IIS中新建站点步骤三:下载安装模块:urlrewrite传送门:https://www.iis.net/downloads/m......