大半夜睡不着...

今天用node写了返回客户端请求资源的http服务,确实发现了一些以前没注意到的问题。

第一个是在接收到请求的时候,解析完路径后,一定要判断请求的文件的后缀,以便选择对应的Content-Type。

第二个是要确保请求资源的路径正确。

我今天犯了一个错误是,在这个单纯返回请求资源的http服务中,当匹配不到资源时,返回index.html.

这就埋下了一个隐患:

当我从index页面通过location.href跳转到B页面时,由于判断后缀的switch语句中漏了对.html类型的判断,导致B页面直接返回了index.html,而此时B页面的路径是/B.html。

而B页面i拿到的ndex文档中的link标签发起css请求时,请求的路径在/B.html的基础上变成了/B/css/b.css,正确的地址应该是/css/b.css。node程序因此抛出错误而退出。

在调试的过程中,我也梳理了node中常见的几个路径:

__dirname:被执行的js文件所在文件夹;

__filename:被执行的JS的绝对路径。

process.cwd():运行node命令时所在文件夹的绝对路径。

同时也有前辈指出只有在 require() 时才使用相对路径(./, ../) 的写法。

参见:https://github.com/imsobear/blog/issues/48

node中几个路径的梳理的更多相关文章

  1. Node中包的加载机制

      1.Node原生提供的核心模块:http.fs.os.path.url.querystring,Node在加载核心模块时,不需要传入路径,因为Node.js已经将核心模块的文件代码编译到了二进制的 ...

  2. Node.js文件系统、路径的操作详解

    17173 17173 2 75 2014-12-12T05:06:00Z 2014-12-12T05:06:00Z 21 2735 15595 www.17173.com 129 36 18294 ...

  3. Node.js文件系统、路径的操作函数

    Node.js文件系统.路径的操作函数 目录 Node.js文件系统.路径的操作函数 1.读取文件readFile函数 2.写文件 3.以追加方式写文件 4.打开文件 5.读文件,读取打开的文件内容到 ...

  4. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  5. Node中的模块引入机制

    1.如果模块在当前目录下,可以通过下面语句将模块引入进来,注意需要使用 "./"表示当前路径 const currency = require('./currency'); ←-- ...

  6. node中的ajax提交小例子

    我们看一个HTML5页面中通过AJAX请求的方式获取HTTP服务器返回数据的代码示例.由于我们把服务器的端口指定为1337,并将从端口为80的网站中运行HTML5页面,因此这是一种跨域操作,需要在HT ...

  7. node中的require

    /*在node中,可以使用require()函数来加载模块. * require函数使用一个参数,参数值可以带有完整路径的模块的文件名,也可以为模块名.当使用node中提供的模块时,在require函 ...

  8. js/jquery 获取本地文件的文件路劲 获取input框中type=‘file’ 中的文件路径(转载)

     原文:http://blog.csdn.net/niyingxunzong/article/details/16989947 js/jquery 获取本地文件的文件路劲 获取input框中type= ...

  9. nodejs中require的路径是一个文件夹时发生了什么

    node中使用require的时候如果路径是一个文件夹时,或者特殊的情况require('..');require('.'); 这是node实战这本书里说的情况,但是我在node6.9版本中发现不完全 ...

随机推荐

  1. 《JAVA8开发指南》使用流式操作

    为什么需要流式操作 集合API是Java API中最重要的部分.基本上每一个java程序都离不开集合.尽管很重要,但是现有的集合处理在很多方面都无法满足需要. 一个原因是,许多其他的语言或者类库以声明 ...

  2. TP5 JSON对象数组转换为普通数组

    来源于:https://blog.csdn.net/lingchen__/article/details/67671047 使用TP5框架做项目时,对于数据的查询返回的都是对象,虽然也可以当做普通的数 ...

  3. php header() 常用content-type

    //定义编码 header( 'Content-Type:text/html;charset=utf-8 '); //Atom header('Content-type: application/at ...

  4. Selenium常见报错问题(1)- 先来认识下selenium常见异常类

    如果你在跑selenium脚本时,需要某些异常不知道怎么解决时,可以看看这一系列的文章,看看有没有你需要的答案 https://www.cnblogs.com/poloyy/category/1749 ...

  5. icmp的抓包分析

    ICMP(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网络 ...

  6. 小白也能轻松上手的Prometheus教程

    这篇文章将承接此前关于使用Prometheus配置自定义告警规则的文章.在本文中,我们将demo安装Prometheus的过程以及配置Alertmanager,使其能够在触发告警时能发送邮件,但我们将 ...

  7. CentOS7虚拟机安装vmtools

    直接开始: 在安装vmtools之前,需要先安装两个小部件,否则将安装失败. 下面是步骤: 1.切换为root模式,需要输入root密码,但是不显示. 命令为: su 2.安装gcc 命令为: yum ...

  8. mac OS 安装 Node.js

    打开Node.js官网https://nodejs.org/zh-cn/选择你需要的版本 下载安装 安装完成 输入命令 node -v 查看版本号 输入命令 npm -v 查看版本号

  9. Joomla CMS 3.2-3.4.4 SQL注入 漏洞分析

    RickGray · 2015/10/26 11:24 昨日,Joomla CMS发布新版本3.4.5,该版本修复了一个高危的SQL注入漏洞,3.2至3.4.4版本都受到影响.攻击者通过该漏洞可以直接 ...

  10. 第十届山东省赛L题Median(floyd传递闭包)+ poj1975 (昨晚的课程总结错了,什么就出度出度,那应该是叫讨论一个元素与其余的关系)

    Median Time Limit: 1 Second Memory Limit: 65536 KB Recall the definition of the median of elements w ...