node - path路径
1、node命令路径与js文件路径
node命令路径为node命令所执行的目录,js文件路径指的是你要运行的js所在的目录。

如上图所示: server.js路径为E:\zyp; node命令路径我们可以选择 E:\或 E:\node,即:
E:\zpy>node server.js
E:\>node zpy/server.js
后续我们将通过以上两个不同的node命令来运行server.js文件,分别对本文标题所涉及的一些概念进行测试,毕竟计算机是不是说慌的!
2、相对地址转绝对地址
我们可以通过引入path内置模块,并使用其resolve()方法将相对路径转换为绝对路径。
server.js:
const path = require("path");
console.log(path.resolve("./"));
运行:
E:\zpy>node server.js
结果:
E:\zpy
E:\
3、比较__dirname、__filename以及./
server.js内容:
const path = require("path");
console.log("__dirname: "+__dirname);
console.log("__filename: "+__filename);
console.log("./: "+path.resolve("./"));
E:\zpy>运行命令:
E:\zpy>node server.js
运行结果:
__dirname: E:\zpy
__filename: E:\zpy\server.js
./: E:\zpy
E:\>运行命令:
E:\>node zpy/server.js
运行结果:
__dirname: E:\zpy
__filename: E:\zpy\server.js
./: E:\
小结:
- __dirname: 返回
js所在文件夹的绝对路径 - __filename: 返回被执行的
js的绝对路径 - ./: 返回执行
node命令的绝对路径
4、再来看一个问题:
在server同级创建一个名字为mo.js的文件,该文件内容:
module.exports.siteUrl = "http://www.zhangpeiyue.com";
server.js内容修改如下:
const mo = require("./mo");
console.log(mo.siteUrl);
目前目录结构如下:

E:\zpy>运行命令:
E:\zpy>node server.js
运行结果:
http://www.zhangpeiyue.com
E:\>运行命令:
E:\>node zpy/server.js
运行结果:
http://www.zhangpeiyue.com
通过以上命令运行结果,你会惊讶的发现:在两种不同的node命令路径下,request引入地址采用相对地址"./"的情况下,不仅没有发生异常,而且都可以调用到mo.js!
那是因为request中的路径总是相对于包含它的文件,跟你的工作目录是没有半毛钱关系的。
总结:"./"在 require() 中使用与__dirname 的效果相同,不会因为运行脚本的目录不同而发生改变。
5、建议
使用require() 时可采用相对路径(./, ../) 的写法,其他务必使用绝对路径。例如:
// 与当前文件同目录下的server.js
path.dirname(__filename) + '/server.js';
// 当前目录的上一级下的zpy文件中的server.js
path.resolve(__dirname, '../zpy/server.js');
node - path路径的更多相关文章
- Linux下修改PATH路径
1.#PATH=$PATH:/opt/lamp/mysql/bin 使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效 2.#vi /etc/profi ...
- Linux系统下修改环境变量PATH路径的三种方法
这里介绍Linux的知识,比如把/etc/apache/bin目录添加到PATH中有三种方法,看完之后你将学会Linux系统下如何修改环境变量PATH路径,需要的朋友可以参考下 电脑中必不可少的就是操 ...
- 如何修改Window系统下PATH路径以及win8下masm32V11
如何修改Window系统下PATH路径 //其实这个都是临时性的, 退出dos窗口就没有用了,只是做个笔记罢了 C:\Users\Administrator> set path=E ...
- [转]sudo找不到命令:修改sudo的PATH路径
sudo有时候会出现找不到命令,而明明PATH路径下包含该命令,让人疑惑.其实出现这种情况的原因,主要是因为当 sudo以管理权限执行命令的时候,linux将PATH环境变量进行了重置,当然这主要是因 ...
- 刚开始学java和刚去工作的时候,1.path路径 2.classpath路径 还有JAVA_HOME相当于/dgs这个路径
把里面bin文件夹下面的可执行文件都配置到path路径下了,以后只要在Dos窗口输入命令就可以运行 无论是在dos窗口下还是在eclispe中只需要配置这个path变量,不需要配置classpath ...
- 沿着path路径做动画
沿着path路径做动画 路径 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 16/1/26 ...
- Python之os.path路径模块中的操作方法总结
#os.path模块主要集成了针对路径文件夹的操作功能,这里我们就来看一下Python中的os.path路径模块中的操作方法总结,需要的朋友可以参考下 解析路径路径解析依赖与os中定义的一些变量: o ...
- node path模块
一.在nodejs中path模块时使用频率很高的模块,其中不乏有很多API写得很模糊,但仔细琢磨下来,也不是很难理解. 1.获取文件所在路径 var path = require('path'); v ...
- svg(1) path路径
注: 笔记来自于http://www.jb51.net/html5/72250.html 以及http://blog.csdn.net/u013291076/article/details/2707 ...
随机推荐
- ISO/IEC 9899:2011 条款6.4.1——关键字
6.4.1 关键字 语法 1.以下为关键字: auto break case char const continue default do double ...
- python使用redis实现协同控制的分布式锁
python使用redis实现协同控制的分布式锁 上午的时候,有个腾讯的朋友问我,关于用zookeeper分布式锁的设计,他的需求其实很简单,就是节点之间的协同合作. 我以前用redis写过一个网络锁 ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_08-用户认证-认证服务查询数据库-用户登录前端
点击登陆注册链接 跳转到登陆的页面 门户的前端代码 当前路径base64编码 登陆的表单,在学习中心的前端. 这就是登陆的表单 这是表单的校验 请求服务端的接口 登陆请求的方法 请求的地址nginx上 ...
- C# winform中使用Panel调节窗口变化是各控件的位置(转)
我的目的是在窗口上有些控件,在窗口大小变化时,上面的控件位置不动,大小也不动.下面的控件随着窗口的大小变化而变大. 做法是用两个panel,panelTop和panelFill.上面的控件都放到pan ...
- python 高阶函数、柯里化
高阶函数 First Class Object 函数在python中是一等公民 函数也是对象,可调用的对象 函数可作为普通变量.参数.返回值等等 高阶函数 数学概念 y=g(f(x)) 在数学和计算机 ...
- jQuery BlockUI Plugin Demo 3(Page Blocking Examples)
This page demonstrates several ways to block the page. Each button below activates blockUI and then ...
- iOS-UIScrollView滚动视图(转)
http://blog.csdn.net/iukey/article/details/7319314 UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 CGRect bou ...
- 如何抓住ECS的命门,让我们的学习事半功倍
导读 这是一篇老文写与2019年5月 我们说如何提高我们的学习效率,有人说一本书一般只会讲一个知识点,那我们学习ECS 如何抓住学习的重点,提高学习效率.经过本人一段时间的学习总结,总于找到了一个便捷 ...
- 关于opencv的几个小总结
关于opencv的几个小总结 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:opencv是一个非常好用的开源图像处理与计算机视觉支持库,但是在实际使用 ...
- [CF837D]Round Subset_动态规划
Round Subset 题目链接:http://codeforces.com/problemset/problem/837/D 数据范围:略. 题解: $dp$比较显然. 但是卡空间,有两种方法: ...