位置: 编程技术 - 正文

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

  • 先包装后销售
  • 电子税务局怎么删除办税员
  • 质量扣款能按折扣计算吗
  • 支付境外技术服务费代扣代缴所得税账务处理
  • 火车票抵扣进项税怎么计算
  • 跨月的增值税普通发票开错了怎么办
  • 红字发票信息表填好后再怎么操作
  • 现金股利什么时候发放
  • 纳税人如何办理纳税申报流程
  • 代理服务费收取标准
  • 政府补助款提现流程
  • 简易征收进项税额转出什么意思
  • 工程发票是不是都要异地预缴
  • 传媒公司的成本构成有哪些
  • 营改增后进项税相关规定
  • 企业给员工购买的团体意外险的被保险人一般是
  • 园林绿化工程税点
  • 未休假报酬需要报个税吗
  • 变更税务登记证法人需要哪些资料
  • 以前年度损益调整怎么用
  • 年数总和法折旧公式
  • 再保险的业务种类
  • 公司帮别人代缴社保
  • 建安企业增值税税率是多少
  • 升级设备属于什么科目
  • 净利润等于未分配利润和盈余公积吗
  • 固定资产计算折旧时用扣除减值吗
  • 欧拉操作系统和龙蜥哪个好用
  • 冲减多计提的工会经费调账说明
  • 无形资产入账摊销
  • 在建工程转固定资产后如何计提折旧
  • 虚拟机系统vmware
  • iis搭建php环境
  • sistray.exe - sistray是什么进程 有什么用
  • php中url
  • 预算会计的核算范围
  • PHP:pg_lo_seek()的用法_PostgreSQL函数
  • 厂房拆迁补偿多少钱一平
  • firefox有什么用
  • opware12.exe - opware12进程是什么文件 有什么用
  • ubuntu npm安装
  • Laravel5中Cookie的使用详解
  • vue创建项目后开始写的步骤
  • 服务费发票怎么入账
  • NovelAi + Webui + Stable-diffusion本地配置
  • 文心为何意
  • 经典目标检测算法
  • 什么是会计确认的基础
  • 成本分配明细表
  • 出租的厂房折旧记哪里
  • java一天速成
  • 增值税普票如何开具红字发票
  • 计入固定资产和费用的区别
  • 残疾人就业保障金
  • 异地预缴的企业所得税
  • 用友t6操作流程
  • 旅行社开具的发票抵扣
  • 资产评估机构可以评估土地吗
  • 工程预付款是否含规费和税金
  • 企业资金如何运动
  • 取得税控服务费会计分录
  • 房屋租赁协议印花税怎么计算
  • 土地税计税方法
  • 客人在酒店
  • 发票线上申领线下配送
  • Win10 Mobile Build 10549正式推送:须回滚到WP8.1升级
  • win10version最新版本
  • number mac
  • win10的显示
  • win8如何隐藏任务栏
  • win10累积更新卡在正在下载
  • 利用nodejs实现百度文本审核
  • jQuery实现两个下拉列表关联
  • shell入门
  • Node.js中的包管理工具是什么
  • js函数关键字
  • 理解的英文
  • 每年个人所得税2万工资多少
  • 收到虚开增值税专用发票怎么处理
  • 福建电子税务局社保缴费操作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设