位置: 编程技术 - 正文

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

  • 厂房出租开发票怎么交税
  • 买房子一定要交税吗
  • 特殊性税务处理弥补亏损限额
  • 国家重大水利工程建设基金计算方法
  • 建设单位施工现场补助
  • 长期待摊费用对方科目
  • 有限合伙企业属于什么经济类型
  • 利润分配的规则
  • 总承包单位可以分包吗
  • 广告公司个人所得税几个点
  • 实缴注册资本交税吗
  • 社保基数3125交多少钱
  • 职工薪酬会计准则
  • 结转折旧费会计分录
  • 转让部分股份流程
  • 公司发年终奖怎么发朋友圈
  • 企业所得税汇算清缴网上申报流程
  • 企业缴纳的社保怎么查询
  • 公司无偿使用个人车辆,个人需要缴纳税款吗
  • 营改增工程计价规则
  • 利润减库存为什么不等于现金
  • 小型微利企业的条件
  • 取得的分成收入怎么计算
  • 红冲发票后 库存怎么处理
  • 报销时可以一个人报销吗
  • 条形码费用属于哪个科目
  • qt5core.dll丢失解决方法
  • Windows11怎么免费升级专业版
  • 公司+农户经营模式是什么意思
  • php开发用什么ide
  • php怎么配置环境
  • steam怎么退款申请退款要多久
  • 任务管理器无法完成操作拒绝访问
  • 香椿的功效与作用百度百科
  • 公司购买货物
  • 旅游 服务业
  • php 堆排序
  • 鼓励证券投资基金的政策
  • 债务重组收益的计算
  • 不合格的设备怎么处理
  • 专项储备计提和使用
  • php函数的定义和调用
  • smarty模板数学运算示例
  • 人工智能内容生成
  • chattr i
  • 进项税没入账补入账分录
  • 织梦安装完要删除哪个文件
  • 文化传媒公司介绍
  • 个税 全年累计
  • 收到退货怎么做会计分录
  • 收到以前年度多交增值税账务处理怎么做账
  • 软件退税款会计如何处理
  • 税控技术维护费普通发票可以抵扣吗
  • 存货呆滞的原因及处理表格
  • 4s店销售返利
  • 购买专利后有占有权吗
  • 资固定资产清理
  • 小规模公司购买成本票严重吗
  • 分公司设立条件怎么写
  • 股东现金存入公司账户,该如何做账?
  • 企业购入树木花草如何入账
  • MySQL replace into 语句浅析(一)
  • mybatis报错invalid bound statement
  • 怎么用手机号查快递
  • 使用注册表删除软件时,有些拒绝访问
  • linux修改ulimit立即生效
  • win7系统出现蓝屏怎么进去桌面
  • Win10系统如何使用无线网卡上网 win10台式机使用无线网卡上网的两种方法图文教程
  • 退出清理磁盘
  • root什么玩意
  • windows7开机启动
  • unity3ds
  • 简述jquery
  • async/await与promise(nodejs中的异步操作问题)
  • 噩梦像连续剧
  • 简单使用23 款华为s E可以吗
  • 200平交多少契税
  • 税务如何查饭店信息
  • 税务执法资格考试
  • 火车报销凭证丢了还能退款吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设