位置: 编程技术 - 正文

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

  • 进项税额加计抵减会计分录
  • 在外地施工的企业应该在哪里申报
  • 出口支付给境外的佣金
  • 收款金额比开票金额少是对方扣的手续费
  • 残疾人保障金做什么会计科目
  • 残疾人保障金零申报怎么填写
  • 普通折叠发票代码是几位数
  • 进项税额抵扣一般多少
  • 借贷记账法要求对某一笔经济业务在两个账户
  • 房屋租赁发票可以抵扣增值税吗
  • 企业进口应税物资在进口环节应交的消费税,应计入
  • 公司委托其他公司为员工代缴社保公积金
  • 房地产企业预缴企业所得税怎么算
  • 个人安装设备属于劳务吗
  • 成本票和专票区别
  • 国家税务总局13号文
  • 季度利润表本月数和本年累计数
  • 生育津贴需要缴纳五险一金吗
  • 其他业务收入包括哪些内容
  • 其他税收收入包括
  • 红冲无票收入怎么报税
  • 研发费用加计扣除的条件
  • 存货丢失取得赔偿
  • 商标注册费用
  • movie maker是什么软件
  • 携税宝续费
  • win10改头像怎么删除以前的头像
  • 营业利润是怎么计算的?
  • 虚假财务报表的案例
  • 公司清算的补偿方案是不是应该公布了
  • batset命令
  • php floor
  • redis zset源码
  • js如何把字符串转换成数字
  • vuecli项目实战
  • vue预览word加水印
  • 办公室清洁费计算公式
  • 小规模纳税人附加税会计分录
  • 工会组织机构需要备案吗
  • mysql行锁的作用
  • cgroup限制内存
  • 织梦网站怎么添加关键词
  • Philtron: a PHP Proxy for HTTP
  • 向分支机构支付融资利息可以扣除吗?
  • 独立核算的分公司可以汇总纳税吗
  • 费用科目什么意思
  • 个人所得税的计算标准
  • 本期盈余转入累计盈余
  • 累计折旧借贷方向表示什么意思
  • 房地产开发结转流程
  • 远期支票可以背书转让吗
  • 办公费项目内容
  • 加班餐费报销计入什么费用
  • 购车融资是什么意思
  • 新开的公司税务那边要办什么
  • 成品油发票的勾选方法
  • 企业的支出包括( )支出
  • 收到委托加工物资发票
  • 会计凭证中阿拉伯数字如何书写
  • 单独设置停工损失科目
  • jdbc连接sqlserver数据库查询数据画饼图
  • win7怎么把桌面图标显示出来
  • windows 专业版10安装后文件会丢失嘛
  • 教你如何解决蓝光机/KODI无法打开局域网smb共享的问题
  • windows8怎么使用
  • windows8功能设置
  • 惠普笔记本win8.1
  • win10家庭版教程
  • 自动切换桌面
  • windows10预览版是什么
  • js简单实现点击按钮商品加入购物车
  • jquery validation
  • bat批处理执行cmd命令
  • android屏幕尺寸适配
  • android shareuid
  • python UNIX_TIMESTAMP时间处理方法分析
  • python电话本
  • 江苏国税申报怎么操作流程
  • 四川灵活就业医保每月返多少钱
  • 个人彩票收入属什么类别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设