位置: 编程技术 - 正文

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

  • 一般纳税人的认定时间
  • 个人股权转让如何缴纳印花税
  • 税率和征收率有什么不一样
  • 增值税发票抵扣是什么意思
  • 可回收再生资源有哪些
  • 积分兑换商品怎么入账
  • 支付与其他经营活动有关的现金公式
  • 一般纳税人缴纳税金分录
  • 公司端午礼盒
  • 坏账准备和信用账户区别
  • 劳务公司开票税收分类
  • 企业最应避免的外部环境和内部条件组合是
  • 人力资源劳务费发票税率
  • 支付税点怎么做账
  • 企业名称变更后原名称还能使用吗
  • 产品成本核算的一般程序
  • 民办非企业单位可以盈利吗
  • 公司年会增值税专用发票可以抵扣吗?
  • 自然人销售固定资产
  • 外购物品用于计提折旧吗
  • 收到政府补助用于购买环保设备
  • 应交税费的会计处理2018
  • 股权转让的会计凭证
  • 苹果充电宝怎么验真假
  • 直接计入所有者权益的交易或事项
  • 购买性支出和转移性支出的本质区别
  • 改征增值税是什么意思
  • 奥尔梅克
  • 收据不可以入账吗
  • 前端埋点sdk
  • 饿了么指定单
  • 销售产品是销项税额还是进项税额
  • Vue 3 介绍
  • 印花税应计入什么
  • 未开票收入为负数是什么意思
  • 成本法变为权益法合并层面计算投资收益
  • 发票边缘有孔的可以撕掉吗
  • 总公司不是小微企业,分公司独立核算的
  • 企业坏账准备提取的方法和提取的比例由国家统一规定
  • php判断是否存在某字符串
  • mysql表设计原则
  • 公司认缴出资怎么交税
  • 个体工商户未年报 经营异常罚款
  • 应发工资包括岗位工资吗
  • 置换他行按揭贷款
  • 福利费专票必须抵扣再转出吗
  • 本期销项税额怎么算
  • 服装行业营业收入存在的问题与对策
  • 商品周转率公式
  • 未拿到发票如何处理
  • 应付账款周转率计算公式
  • 流动性比率过小什么意思
  • 母公司代子公司收款,子公司开具发票
  • 飞机票退票费如何开票
  • 一般纳税人附加税
  • windows10预览版怎么样
  • window 启动
  • windows屏幕上有多个窗口时
  • setlang.exe - setlang是什么进程 有什么用
  • 基于linux的mplayer音乐播放器
  • Win10 Mobile Redstone预览版14291上手体验评测
  • win8取消自动更新
  • 表单提交servlet
  • jquery动态添加
  • 命令以管理员运行
  • Unity3D游戏开发培训课程大纲
  • centos7开不了机
  • python 内置函数名作为变量名
  • node.js中的http.response.addTrailers方法使用说明
  • python爬虫模拟登录亚马逊
  • cocos2dx:C++层通过JniHelper调用JAVA层代码进而调用Android手机应用接口
  • jquery选择器大全
  • python解译器
  • js实现的倒计时怎么用
  • 使用jQuery给input标签设置默认值
  • python画足球
  • 农产品核定扣除办法38号公告
  • 一般纳税人业务招待费可以抵扣吗
  • 卖废铁分录
  • 江苏省税务局授权网址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设