位置: 编程技术 - 正文

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

  • 企业税申报的三种方式
  • 增值税申报错误已经缴税了怎么办
  • 转租价格由谁决定
  • 事业单位无形资产摊销年限
  • 计提社保公积金的会计分录
  • 利润总额和净利润相同说明什么
  • 预提费用所得税前扣除
  • 嵌入式软件产品的批准放行
  • 小规模纳税人取的专票能抵扣吗
  • 物业公司是小规模纳税人税率是多少
  • 企业取得该项资产时实际发生的支出
  • 事业单位个税可以抵扣吗
  • 营业外收入包括其他业务收入吗
  • 劳务派遣能不能预支工资
  • 企业法人个人帐户是什么
  • 百旺红字发票申领流程
  • 物业公司怎么开展业务
  • 为什么盈利的企业也有可能发生债务危机
  • 城建税教育费附加和地方教育费附加
  • 业务宣传费企业所得税扣除标准是多少
  • 政府补助企业的钱要交税吗
  • 跨期发票如何进行会计处理?
  • 企业所得税是怎么来的?
  • 华为手机蓝牙传送照片到苹果手机
  • 用户登录系统后首先进入什么
  • 苹果电脑型号怎么查
  • 股票退市怎样补仓
  • 预提开发成本超过10%部分计算的销售成本转回
  • 美团佣金收费标准结构图
  • 销售嵌入式软件产品发票如何开具
  • 公司被收购后所需资金
  • 错账改正方法
  • unc方式
  • PHP:pcntl_sigtimedwait()的用法_PCNTL函数
  • 金融机构拆出资金的最长期限
  • codeigniter 教程
  • 开具增值税专用发票和普通发票的区别
  • 合同中违约金
  • 固定资产投资账面价值
  • 收不回的应收账款分录
  • 增值税发票没认证可以退回吗
  • 代开发票是否代征城建税和教育费附加?
  • 什么是银行对账,进行银行对账分为几步
  • mongodb reference
  • 开专票明细太多怎么开
  • ubuntu20.04vim
  • 抵扣的税可以退掉么?
  • mysql 优化口诀
  • 劳务报酬收入是否含税
  • 全年一次性奖金单独计税还是并入
  • 普通费用发票不入账会有什么后果吗
  • 计提费用收到发票怎么做
  • 信用减值损失是什么项目
  • acca中ebq等于
  • 期初金额是什么
  • 预缴税款是什么税款
  • 幼儿园收取的生活费免税吗
  • 退货对方不开具红字发票怎么办
  • 实物出资没有发票怎么办
  • 实收资本不到账怎么处理
  • 多交的社保退回多久能到账
  • 小规模纳税企业在应交增值税明细科目
  • 弃置费用预计负债的会计处理
  • 税控盘反写怎么操作流程
  • 商品销售成本的计算可以采用逆算成本法,其操作方法是
  • oracle忘记用户名密码怎么办
  • win7桌面计算机
  • ubuntu系统如何
  • mac查看地址
  • linux怎么添加新用户
  • redis开机自动启动linux
  • opengl教程48讲
  • windows设置开机启动软件
  • jquery 点击按钮
  • android的r
  • window.onerror()的用法与实例分析
  • 主机端口扫描程序设计python
  • 税务催告期限多久
  • 增值税已申报但是忘清卡
  • 如何查询海关进口货物报关单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设