位置: 编程技术 - 正文

浅析 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)

  • 车保保险合同
  • 一般纳税人的税收优惠政策
  • 小规模季度不超30万需要交什么税
  • 增值税专用发票电子版
  • 税务局代个人开票
  • 工伤保险应该计入什么科目
  • 购买车辆交纳的费用
  • 定额材料损耗率国家标准
  • 上年的增值税专票,下年还能抵扣认证吗
  • 单位购买的团体意外险会计分录
  • 出口退税收入凭证怎么填
  • 全面推开营改增试点12366热点问题解答(一)
  • 转增股本是股票股利吗
  • 购买理财产品会损失本金吗
  • 连续3个月增值税留抵
  • 公司买回来做样衣的服装怎么做会计分录?
  • 财务报表申报完可以修改吗
  • 银行中间业务能开具增值税专票吗
  • 盈余公积转增实收资本要交税吗
  • 交易性金融资产公允价值变动计入
  • 鸿蒙系统如何添加信任软件
  • 客户收集软件
  • 采购及安装合同怎么缴纳印花税
  • 老板拿的手机
  • 加工费计入成本怎么计算所得税
  • php cgi配置
  • 增值税出口服务零税率
  • 付款结算单范本
  • 承包安装工程怎么报价
  • 个体户变更为有限公司成立时间
  • php异步处理方案
  • 网页单行文本框
  • 工程收到款项会计分录
  • echarts柱状图立体
  • pytorch with no grad
  • 增值税普通发票有什么用
  • 怎么在网上增加办税人员
  • 扣税免除项
  • 研发费用没有发票怎么做账
  • 你用python做什么
  • SQL server 2008中的数据库能否只包含数据文件
  • 消费税计税分录
  • 运输业开发票
  • 注册资本认缴与实缴有什么区别
  • 应付账款暂估会计处理
  • 收到预付卡的发票是否可以报销呢?
  • 电子商业承兑会不会拿不到钱
  • 税务局多扣的税可以退吗
  • 公司销售二手车怎么申报增值税
  • 收到红字发票如何处理
  • 地税报表如何填写
  • 建筑工程合同中社保基金保证金
  • 会计循环属于什么流程
  • 会计账薄按其外形特征不同可以分为
  • 如何进行企业建账
  • mysql多表查询方式
  • mysql 注入漏洞
  • 从根上保证电脑安全、不中毒的方法
  • win10系统找不到mrt
  • win8怎么外接屏幕
  • win8电脑d盘不见了怎么恢复
  • win7如何打开命令窗口
  • win8的桌面文件在哪里
  • js方法
  • 环境篇作文
  • unicode和utf–8 编码
  • 着色器模型
  • bat修改注册表数值
  • ip地址一键切换
  • python里模块
  • 每次开机windows桌面更新
  • centos 安装pip3
  • 编写js代码要注意什么
  • jquery悬浮弹出提示框
  • jquery怎么实现分页功能
  • 宝鸡税务局长
  • 外经证预缴税款网上流程
  • 北京市地方税务局发票查验
  • 什么是居民企业和非居民企业
  • 云南国家税务网上开票赋码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设