位置: 编程技术 - 正文

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

  • 公司给员工代办失业证
  • 新的税收
  • 简易计税方法的计算公式
  • 固定资产的折旧费用计入什么科目
  • 发票验旧期限
  • 预包装食品是否备案怎么查询
  • 收到借款确认书模板
  • 转贴现视为贷款银行如何进行账务处理?
  • 支付外聘老师的培训费
  • 发票开出来对方不走账会怎么样?
  • 酒店购买毛巾客房领用怎么做会计分录?
  • 白蚁防治费计入什么科目
  • 申报截止日期前还能用吗
  • 关联方债权投资与权益投资比例
  • 以前年度城建税减免可以计去营业外收入嘛
  • 公司工会发给职工的福利
  • 本年利润有期末余额吗
  • 购进的出口货物如何入账
  • 企业税收分为几大类
  • 工程合同外购设备怎么开票
  • 主营业务利润计算
  • 系统备份工具
  • photoshop人像磨皮方法
  • app data文件夹
  • 评标专家评审费应该谁来付
  • 电脑管家使用教程
  • word文档不好用
  • babel-plugin-import
  • 计提增值税可以无付凭证吗
  • php多任务
  • 委托加工物资验收入库的金额
  • 红字专用发票开具的规定
  • thinkphp常用函数
  • pyecharts 表格
  • 阿里pv
  • 选择相邻兄弟需要使用下列哪个符号
  • 企业成本核算应遵循
  • 航天远程清卡
  • 预付账款的适用范围
  • php shell_exec
  • 设计模式适配器模式代码编写
  • 劳务派遣工资的发放单位
  • 公司吸收合并流程详细步骤
  • 行政单位福利费管理办法
  • 申请电子发票需要什么条件
  • 汇兑损益一级科目
  • 支付土地补偿款计入什么科目
  • 个人所得税如何缴纳
  • 季报业务活动表怎么做
  • 销售提成如何入账
  • 期末留抵的税额怎么做分录
  • 业务招待费文件
  • 银行承兑汇票利息归谁
  • 纳税申报准备什么材料
  • 投资的公司注销了怎么做账
  • 一般纳税人劳务税率是多少?
  • 建账在哪里完成
  • 租写字楼水电费自己付吗
  • 应付账款怎么做平
  • 应收账款管理办法
  • sql server错误和使用情况报告
  • mysql安装与配置的步骤与常用命令
  • Mysql5.7.14 linux版密码忘记完美解决办法
  • sqlserver怎么恢复数据
  • bash是什么意思中文翻译
  • 怎样设置ie8
  • 使用cp命令时以下说法错误的是
  • unity用visual
  • linux快速启动终端
  • code::blocks怎么用
  • js动态执行代码
  • js 实现复制到粘贴功能
  • jQuery基于muipicker实现仿ios时间选择
  • 打不死的小强励志词句
  • python 管理系统
  • 四川税务网络领发票流程
  • 水电费的增值税专用税可抵扣进项
  • 2022年中国烟草营收
  • 如何申报印花税的流程
  • 合肥高新公共事务管理有限公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设