位置: 编程技术 - 正文

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

  • 破产企业发放工资要不要纳税?
  • 住宿费可以抵扣进项吗
  • 新会计准则低值易耗品属于哪个科目
  • 开了发票不做收入的账务处理
  • 财务软件属于无形资产的哪一种
  • 代征增值税业务的账务处理
  • 生产企业的基础设施是指
  • 融资性售后回租承租方出售资产为什么不缴纳增值税
  • 丢失发票罚款如何入账
  • 税控盘服务费怎么填写申报表
  • 劳务公司开票是开劳务费还是工程服务
  • 按折现率计算现值
  • 考勤扣款是税前还是税后
  • 什么情况下只交城建税不交教育及地方税?
  • 一般纳税人出租不动产增值税税率
  • 年底增值税有余额吗
  • 4月份到期包括4月吗
  • 提高并购成本
  • 工程施工科目核算
  • 应付暂估应在何时申报
  • 通行费发票怎么开
  • 库存商品进货价怎么算
  • 公司名下商品房卖给个人后房产税怎么交
  • 半成品核算工作步骤及要求
  • 个税是每个月累计纳税额吗
  • 网速突然变差是什么原因
  • window10总是自动开机
  • php循环结构有哪几种语句
  • wifi密码忘记了怎么重新设置密码
  • powerdvd remote
  • 非货币性资产交换的记忆口诀
  • 鸿蒙系统怎么退出开发者选项
  • 建筑业异地施工可以先开发票么
  • 灯光璀璨的夜晚
  • 成本会计工作流程表
  • 企业所得税核定征收方法有哪两种
  • php通过url传递参数
  • 固定资产净残值率是多少
  • framework core
  • 接受捐赠固定资产的改建支出
  • 2020ccf csp报名和考试时间
  • 应交增值税科目设置及账务处理
  • 综合评价怎么改
  • 代收代缴的水电费怎么开票
  • 企业合并中或有对价的会计处理
  • 营改增对企业有什么弊端
  • 购礼品送客户分账务处理怎么做
  • 基建结束后该做哪些工作
  • 政府部门拨款流程
  • 应付职工薪酬应该在借方还是贷方
  • 往来出现差额调账说明
  • 会展费会计分录
  • mac os x 10.12.2 Beta1怎么升级?macOS Sierra 10.12.2 Beta升级图文教程
  • SsAAD.exe - SsAAD是什么进程
  • ConquerCam.exe进程的详细介绍 ConquerCam进程信息介绍
  • win8系统无线网络图标不见了
  • 如何关闭office开机自启动
  • Win7系统打开IE提示“堆栈满溢”的多种解决方案
  • win8系统连接共享打印机需要设置什么
  • 轨迹球怎么调出来
  • opengl绘图
  • javascript:openattachment
  • jquery教程w3c
  • android时间轴实现
  • 内部变量 变成 外部变量
  • jquery示例
  • 命令如下
  • typescript的type
  • 源码分析工具
  • javascript详细介绍
  • Python Requests 基础入门
  • CLASS_CONFUSION JS混淆 全源码
  • jquery 扩展事件
  • jquery操作元素样式
  • Python字符串的常用方法
  • 河南省地方税务局公告2017年第4号
  • 开专票必须要有规格型号吗
  • 上海市国家税务局
  • 深圳北站哪里取纸质票
  • 铁路检察院和普检哪个好
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设