位置: 编程技术 - 正文

浅析 NodeJs 的几种文件路径(nodejs实战教程)

编辑:rootadmin

推荐整理分享浅析 NodeJs 的几种文件路径(nodejs实战教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs到底有啥用,nodejs的典型特点,nodejs总结,nodejs总结,nodejs到底有啥用,nodejs的理解,nodejs总结,nodejs的理解,内容如对您有帮助,希望把文章链接给更多的朋友!

一、挖坑 & 掉坑:

缘起一段这样的代码:

本地运行时一切 OK,线上部署时却死活找不到 ./docs/use.md 这个文件,后来才发现是因为线上启动应用时不是从当前目录启动了,不过为什么启动脚本的位置也会影响这个路径呢,且往下看。

二、填坑:

Node 中的文件路径大概有 __dirname, __filename, process.cwd(), ./ 或者 ../,前三个都是绝对路径,为了便于比较,./ 和 ../ 我们通过 path.resolve(‘./')来转换为绝对路径。

先看一个简单的栗子:

假如我们有这样的文件结构:

在 task.js 里编写如下的代码:

在 model 目录下运行 node task.js 得到的输出是:

浅析 NodeJs 的几种文件路径(nodejs实战教程)

然后在 app 目录下运行 node model/task.js,得到的输出是:

那么,不好意思不是问题来了~T_T,我们可以得出一些肤浅的结论了:

__dirname: 总是返回被执行的 js 所在文件夹的绝对路径

__filename: 总是返回被执行的 js 的绝对路径

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

./: 跟 process.cwd() 一样、一样、一样的吗?

我明明记得在 require(‘../lib/common') 里一直都是各种相对路径写,也没见报什么错啊,我们还在再来个栗子吧,还是上面的结构,'model/task.js' 里的代码改成:

在 model 目录下运行 node task.js,一切 Ok,没有报错。然后在 app 目录下运行 node model/task.js,然后很果断滴报错了:

那么这下问题真的都是来了,按照上面的理论,在 app 下运行时,../lib/common.js 会被转成 /Users/guo/Sites/learn/lib/common.js,这个路径显然是不存在的,但是从运行结果可以看出 require(‘../lib/common') 是 OK 的,只是 readFile 时报错了。

那么关于 ./ 正确的结论是:

在 require() 中使用是跟 __dirname 的效果相同,不会因为启动脚本的目录不一样而改变,在其他情况下跟 process.cwd() 效果相同,是相对于启动脚本所在目录的路径。

三、总结:

只有在 require() 时才使用相对路径(./, ../) 的写法,其他地方一律使用绝对路径,如下:

标签: nodejs实战教程

本文链接地址:https://www.jiuchutong.com/biancheng/380840.html 转载请保留说明!

上一篇:nodejs mysql 实现分页的方法(node.js mysql)

下一篇:详解nodejs异步I/O和事件循环(nodejs 异步io)

  • 如何理解递延所得税资产和递延所得税负债
  • 个税手续费返还要交增值税吗
  • 嵌入式软件产品的增值税即征即退具体实例
  • 销售软件税目
  • 业务招待费税前扣除标准是
  • 保险政保业务
  • 食用油交不交消费税
  • 现在的统计证还用年检吗
  • 划转税务的非税发票
  • 契税为什么计入成本
  • 付款单位与开票单位不一致如何做账?
  • 销售金银首饰消费税怎么算
  • 销售免税的有机食品
  • 差额发票和全额发票的税率
  • 增值税汇总纳税政策文件
  • 增值税金内部结算方式
  • 城建税如何做会计分录
  • 股权转让个人交的印花税可以入账吗
  • 住宿费发票开错了可以重新开吗
  • 小微企业季度缴税一百万退税吗
  • 销售蔬菜水果需要什么证件
  • 公允价值变动损益属于损益类的
  • 银行没有流水怎么开证明
  • 股东对外投资
  • 速动资产不包括存货和预付账款
  • 高价转让股份
  • 对公账户被诈骗转款728000会怎么样呢
  • 受托加工物资的账务处理例题
  • led显示屏的销售话术
  • linux 密码重置
  • icon files
  • PHP:Memcached::append()的用法_Memcached类
  • PHP:pcntl_wifstopped()的用法_PCNTL函数
  • 企业所得税扣除标准表
  • 跨年租赁费如何处理
  • 小企业会计准则
  • 勃朗峰峡谷
  • 税控盘维护费全额抵扣分录怎么做
  • 固定资产的使用寿命超过一个会计年度
  • php array add
  • golang调用python代码
  • react_router
  • python脚本例子
  • 二手固定资产怎么折旧
  • 开办费新会计准则
  • 主营业务冲减怎么做账
  • 资质使用费怎么收
  • 委托加工业务的组成计税价格
  • 退还押金的会计分录怎么写
  • 向投资者分配现金股利为什么会导致所有者权益减少?
  • sql2000安装不上是什么原因
  • MYSQL的select 学习笔记
  • mysql数据库在使用时的常见错误号和解决方法有哪些?
  • 信用证保证金有利息吗
  • 以前年度多缴纳房产税,可以递延次年度使用么
  • 制作费用和管理费用
  • 电商刷单返现如何做账务处理合适?
  • 员工食堂买菜怎么写分录
  • 待抵扣增值税退税
  • 融资租赁财产保全金额是多少
  • 企业缴纳社保要下载什么软件
  • 科技经费使用
  • 给外国公司开发票有什么涉税风险
  • 关于端午节福利发放的通知(通知公告)
  • 单位购入车辆能抵扣吗
  • 二手车交易增值税发票
  • 车属于固定资产嘛
  • 怎么操作win10系统
  • centos基本操作
  • 音频文件恢复
  • xp的命令提示符在哪
  • 微软状态
  • js excel解析
  • Javascript Throttle & Debounce应用介绍
  • easyui表格
  • 用Fragment+ViewPager搭建万能的android界面
  • JavaScript中的事件处理
  • c#未来展望
  • centos7如何安装
  • 小规模纳税人租金收入不超过30万
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设