位置: 编程技术 - 正文

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

  • 一般纳税人销售使用过的固定资产
  • 以物抵债需要缴纳之前欠的税吗?
  • 企业所得税季度申报时间
  • 企业所得税季报可以更正吗
  • 出纳人员去银行提取现金时应填写现金缴款单
  • 建筑业会计科目工程结算
  • 拍卖书画收入如何交税
  • 外币账户怎么操作
  • 付给私人股权转让权怎么做分录?
  • 预收账款缴税的计算公式
  • 新办企业汇算清缴流程
  • 行政会计账务处理
  • 外单位的人能否作为本单位的费用报销人?
  • 工会经费应该计入人工成本吗
  • 车辆一次性入费用会计分录
  • 分公司转总公司款分录
  • 企业个人所得税逾期未申报怎么办
  • 发票不能开怎么回事
  • 在会计中加速折旧的方法
  • 一般纳税人注销库存需要补交税吗
  • 累计折旧是备抵类科目吗
  • 个人开农产品发票流程
  • 有现金折扣的采购业务全流程
  • 企业收到银行未收到怎么做账
  • 减免的附加税要计税吗
  • 当期应交所得税怎么计算
  • 开具的服务费怎么做分录
  • 公司购买电器的账务处理
  • 接的网线影响传输吗
  • 怎么取消电脑开机自动启动软件
  • 长期待摊费用摊销会计分录
  • 公司帮人代缴社保怎么做账
  • 购买材料时采购会计分录
  • k210中文手册
  • 非货币资金包括哪些科目
  • 退回的企业所得税怎么做账
  • 斯洛文尼亚nba球星是谁
  • 利润分配的会计分录怎么写
  • 其他综合收益需要写二级科目吗
  • 基于javaweb是什么意思
  • 毕业设计-基于组态软件的流量比值过程控制系统设计
  • laravel enum
  • 什么是预付账款的管理重点
  • python监控模块
  • sql server数据查询语句
  • MySQL: mysql is not running but lock exists 的解决方法
  • 建筑劳务公司一年赚多少钱
  • 广告赞助支出可以抵税吗
  • 房地产企业成本结转
  • 承兑汇票找公司贴现违法吗
  • 纳税人发生应税行为
  • 如何处理库存货
  • 会员卡充值赠送金额怎么做账
  • 哪些合同不用交社保
  • 提取盈余公积的会计科目
  • 管理费用如何冲减
  • 现金比率的计算公式是什么意思
  • 银行存款支付投资者投入的款项54万
  • 应收账款客户少付款怎么记账
  • 银行询证函费用发票
  • 客户手续费率
  • 水利建设税怎么做账
  • c#如何使用数据库
  • 不能用鼠标
  • windows xp怎么设置桌面
  • qvp32.exe - qvp32是什么进程 有什么作用
  • win7使用率
  • linux中wget命令出现错误
  • win8使用技巧 图文
  • unity协程yield
  • 阴影映射可视域分析
  • sed 处理多行
  • dos命令批处理
  • IE6,IE7和firefox对DIV的支持区别
  • node中使用什么引入模块
  • 粒子特效优化
  • javascript中array数组对象的含义及常用方法
  • 公积金取出后显示未到账
  • 天津本田天虹90摩托车库存
  • 余姚市税务局咨询热线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设