位置: 编程技术 - 正文

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

  • 客票服务主要包括
  • 5元印花税怎么申报
  • 外经证预交税怎么算
  • 税控盘怎么增加专票
  • 盈余公积未分配利润
  • 并购产生的商誉怎么冲减
  • 房屋租赁合同印花税租赁双方各自要交多少
  • 电力工程公司岗位职责
  • 招待费进项税如何抵扣
  • 外购的半成品属于原材料吗
  • 开了增值税发票不确认收入可以吗
  • 税收奖励需要纳税吗
  • 公司不交增值税对法人有影响吗
  • 小微企业减半征收印花税代码
  • 非直系亲属继承房产后再卖掉后交税吗
  • 应付账款对账的流程和技巧
  • 转让长期股权投资怎么算
  • 劳务派遣公司增值税税率
  • 公司钱被取走怎么处理
  • 以房抵债房屋能否判决过户
  • 上网的操作
  • 公司买手机怎么做账务处理
  • 苹果mac怎么删除照片
  • 电脑自动更新系统
  • mac 如何u盘启动
  • 提前预支工资怎么报税
  • 公司为员工交的社保比例
  • 跨省异地施工
  • 网站国际化方案
  • 北极光下的众神图片
  • 小程序自定义tabbar创意动画
  • 采用定额法计算产品成本,其程序如何?
  • 总账会计工作职责精选汇总
  • ssh怎么带密码
  • python的opencv
  • 电子承兑利息
  • 预付款能不能开票入账
  • 电子承兑汇票的承兑人是谁
  • 收到发票未抵扣增值税
  • 仓库物资盘盈盘亏怎么办
  • 应交增值税进项税额和销项税额区别
  • 资产处置损益要写明细账吗
  • 费用少计提了怎么办
  • 无形资产如何计提减值
  • 材料成本差异怎么做分录
  • 个人取得全年一次性奖金征税规定
  • 固定资产相关业务
  • 专项应付款能转出吗
  • 短期借款怎么做账务处理
  • 社保稳岗补贴账务处理分录
  • 股权转让如何进行
  • 施工图审查费属于什么费
  • 专用发票与普通发票图片
  • 融资租出固定资产的账务处理
  • 应交税金借方余额在报表列示
  • 商业折扣,现金折扣,销售折让
  • 事业单位对公账户和零余额账户一样么
  • 以前年度多计提的社保费怎么冲回
  • linux bin sbin
  • win7删除系统文件
  • ubuntu更新软件
  • 在苹果电脑上怎么下载软件
  • win7网页无法访问
  • 手机用xp系统
  • linux不能识别u盘
  • 升级win10之后东西不见了
  • win8.1怎么用
  • win10的用户
  • win8关闭uac
  • perl ne
  • Unity3D游戏开发引擎
  • linux shell 中 2>&1的含义
  • jquery的选择器作用是选中某些元素
  • three.js 教程
  • videoleap怎么加音频
  • 木瓜电子
  • 个人所得税怎么退税
  • 江西省税务局发票查询系统
  • 房子的地税发票丢了怎么补办
  • 下列哪些表述是正确的( )
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设