位置: 编程技术 - 正文

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

  • 流转税解释
  • 税收契子怎么算
  • 应交所得税的计税依据
  • 个体户也要做实收资本吗
  • 土地摊销账务处理
  • 销售20万需要多少进项
  • 装水表财务是什么费用
  • 内部报送会计信息有哪些
  • 农产品加计扣除政策2023最新
  • 报销凭证找不到了怎么办
  • 酒店收入简易征收会计核算是怎样的?
  • 未分配利润可以转盈余公积吗
  • 抬头是别的公司怎么报销
  • 软件开发服务费会计分录
  • 通用机打发票单位名称打不下怎么办
  • 2017年7月1日开始实施的税法新规
  • 对公账户分为一般户和基本户
  • 预付账款需要发票吗
  • 出售子公司全部股权的股权账务处理
  • 固定资产清理汇算清缴如何反应
  • 投资性房地产公允价值模式账务处理
  • 出纳人员发现假章怎么办
  • 失控票要在抵扣当月转出吗
  • 母公司给子公司拨款要交税吗
  • windows7中
  • 怎么打开win11的控制面板
  • transit code
  • 赠送礼品进项税需要转出吗
  • iqoo怎么开启无线充电
  • 企业研发费用加计扣除最新政策
  • 【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”
  • 收入支出如何算利润
  • 金碟软件如何查看明细账
  • elementui input无法输入
  • thinkphp3.2框架
  • 比利牛斯山作为天然界限
  • vue qrcode生成二维码
  • php单例模式的简写是什么
  • php引用文件的方法
  • 年应税额是怎么算的
  • 哪些企业不需要做安评
  • 请问如何在
  • 出口退税超期了怎么办
  • 织梦如何使用
  • 合伙律师事务所管理办法最新
  • 建筑公司跨区域经营预缴
  • 商誉的会计核算怎么核算
  • 土地使用权出资是什么意思
  • 外聘人员的劳务合同模板
  • 法人转移公司资产怎么办
  • 应付票据与应付账款增长的多的逃税问题
  • 加油票的发票抬头怎么写
  • Windows Server 2008网络中顺畅访问“邻居”
  • 如何在ubuntu下安装和配置gcc并用C语言
  • linux中sed详细用法
  • Ubuntu keylin 14.04 怎么使用root用户登录?
  • w7系统怎么添加打印机
  • linux安装与基本命令
  • flash是什么文件夹
  • 电脑kernel32.dll
  • win10文件资源
  • 引发脚本异常
  • unity3D LineRender的使用
  • 对用户输入的判断
  • node.js教学
  • button button button
  • 表单jsp
  • javascript ()
  • npm 发布组件
  • js特殊字符有哪些
  • shell脚本配置环境
  • jquery左右滑动菜单
  • unity ugui组件
  • 医院缴纳什么税
  • 购车发票购置税是否包含在内
  • 建筑施工劳务资质
  • 多缴税款可以抵顶以后欠费的税款吗
  • 税务部门协作
  • 48岁了还有必要上环吗
  • 增值税纳税申报表附列资料(三)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设