Node.js中的路径问题基础知识_路径入门基础教程

在前端学习过程中,涉及到路径的问题非常多,相对路径,绝对路径等。有时候明明觉得没问题,但是还是会出错。或者说线下没问题,但是到了线上就出现问题,因此弄懂路径问题,非常关键。我们需要知道为什么这个地方既可以使用相对路径,又可以使用绝对路径,为什么有些地方只能使用绝对路径。一、Node.js中加载模块的路径设置const myClass = require(‘.

Node.js中的路径问题基础知识

在前端学习过程中,涉及到路径的问题非常多,相对路径,绝对路径等。有时候明明觉得没问题,但是还是会出错。或者说线下没问题,但是到了线上就出现问题,因此弄懂路径问题,非常关键。我们需要知道为什么这个地方既可以使用相对路径,又可以使用绝对路径,为什么有些地方只能使用绝对路径。

Node.js中的路径问题基础知识_路径入门基础教程

一、Node.js中加载模块的路径设置

const myClass = require('./myclass')

上面这段代码是我们在使用Node.js中经常会使用到的代码-引入模块。我们都知道如果加载的是核心模块,直接require(模块名)即可。但是使用本地模块,必须加上路径,这是为什么了?这与模块的查找顺序有关:

node 在查找模块的时候:

  1. 它会先在当前目录的node_modules中查找,是否含有该模块,如果有则直接使用
  2. 如果没有则去上一级目录的node_modules中查找,如果有则使用,如果没有则会一直往上查找,一直到磁盘的根目录,如果还没有则报错

从上面node查找模块的顺序,我们可以知道他会一直在node_modules中查找,但是我们自定义模块都不在node_modules中,因此如果我们想要使用自定义模块,必须加上路径,使得它查找模块直接到我们指定的路径中进行查找。(ps:这是我个人研究的一点看法,可能并不正确,欢迎大家指正。)

二. 关于__dirname和__filename

有些时候,你需要打开一些不在模块系统中的文件来加载数据,但你需要通过当前脚本的路径来找到那个文件。这时候__dirname和__filename变量在这种场景下非常有用。这些变量保存着当前脚本的绝对路径。

__dirname:当前文件的目录的绝对路径,通俗的来说是当前文件的上一级。注意它的路径始终是固定的,与你的光标所在的位置无关(也就是说与你在哪个路径运行node无关)

Node.js中的路径问题基础知识_路径入门基础教程

如上图所示:index.js文件中console.log(__dirname),最终得到的绝对路径是:

xxx\Node.js_in_practice\chapter two\group

最终路径到上一级group为止。

__filename:当前文件的绝对路径,包含当前文件的文件名。

Node.js中的路径问题基础知识_路径入门基础教程

如上图所示:在index.js中的文件路径应该是:

xxx\Node.js_in_practice\chapter two\group\index.js

最终的路径包含文件名。其路径同样与在哪里运行node无关。

海计划公众号
(0)
上一篇 2020/03/30 07:19
下一篇 2020/03/30 07:19

您可能感兴趣的内容

  • JavaScript 构造函数的继承小白攻略_继承新手入门

    JavaScript 构造函数的继承小白攻略 JavaScript 构造函数的继承 继承是 OO 语言中的一个最为人津津乐道的概念。许多 OO 语言都支持两种继承方式:接口继承和实…

    2020/03/20
  • 结合React的Effect Hook分析组件副作用的清除小白知识_Hook菜鸟攻略

    一个订阅好友在线的组件我们在DidMount的时候通过ID订阅了好友的在线状态,并且为了防止内存泄漏,我们需要在WillUnmount清除订阅但是当组件已经显示在屏幕上时,friend prop 发生变化时会发生什么? 我们的组件将继续展示原来的好友状态。这是一个 bug。而且我们还会因为取消订阅时使用错误的好友 ID 导致内存泄露或崩溃的问题。class

    2020/03/24
  • CNET攻略教程国内以业界公认的领先旗舰媒体覆盖IT行业和数字生活领域

    CNET攻略教程 官方网址:https://www.cnet.com/ 简介描述:国内以业界公认的领先旗舰媒体覆盖IT行业和数字生活领域 CNET科技资讯网的内容来源两方面的权威渠…

    2020/03/06
  • vue中8种组件通信方式菜鸟指南_组件入门基础教程

    vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢?首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式, 就好像过年回家,坐着一屋子的陌生人,相互之间怎么称呼,这时就需要先知道自己和他们之间是什么样的关系。vue组件中关系说明:如上图所示, A与B、A与C、B与D、C与

    2020/03/29
  • jquery.timeago.js菜鸟攻略_一款基于jQuery的时间处理插件

    jquery.timeago.js菜鸟攻略 官方网址:http://timeago.yarp.com GitHub:https://github.com/rmm5t/jquery-…

    2020/03/06
  • 什么是javascript对象?基础知识教程_对象入门知识

    在 JavaScript 中,对象是拥有属性和方法的数据集合;JavaScript对象是被称为属性和方法的命名值的容器。包含在对象里的数据可以通过两种形式访问-属性和方法。JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。所有JavaScript 值,除了原始值,都是对象。说明:原始值指的是没有属性或方法的值。如何创建JavaScri

    2020/03/24
  • Alloyteam代码规范小白知识_主要用到jscs,jshint,sass-lint,csslint 四个规范检查插件

    Alloyteam代码规范小白知识 官方网址:http://alloyteam.github.io/CodeGuide/ GitHub:https://github.com/All…

    2020/03/08
  • 三年前端,面试思考零基础入门_面试指南攻略

    背景16年普通本科毕业,毕业后来到北京,任职于一家创业公司,三年前端开发经验。三年时间任职于同一家公司,环境逐渐舒适,不管是技术上还是业务上都到达了一个瓶颈期,于是便有了这次跳槽经历。核心诉求在换工作的时候,要认真思考自己下一步的目标与未来的一个职业规划,明白自己想要什么,搞清楚自己的核心诉求,然后有方向的去投递简历,这样才能事半功倍,拿到一份心仪的offe

    2020/03/23
  • 网站策划运营基础知识一图看懂网站策划、网站运营、网站整合营销流_运营基础知识

    在年前,野马在网上看到一看图,是来源于互联网分析沙龙,网站运营流程体系图,这张图从网站策划到网站运营推广,再到网站整合营销的整个过程,做的非常的全面,大神真赞!今有网友问起网站运营这块就分享出来,希望有所帮助!一、首先是网站策划网站策划是网站平台建设的第一个环节,也是网站成败的重要关键,网站策划说白了就是网站解决方案,能给客户带来什么价值,以及通过何种方法去

    2020/04/03
  • 给程序员发工资的老板们都拿多少钱?入门基础_程序员使用攻略

    我们常说:“出任 CEO,走上人生巅峰。”那么,CEO 到底能赚多少钱呢?近日,Blossom Street Ventures 公司调查了 101 家科技公司首席执行官(CEO)在 IPO 时的薪酬。从 调查报告 看,各家 CEO 的薪酬差距很大,有的 CEO 年薪可能为 3.5 万美元,而有的 CEO 年薪达到了 32.5 万美元。免费务工的 CEO,不仅

    2020/03/23
  • 企业网站怎么才能防御DDOS***?菜鸟攻略_安全使用帮助

    昨天一个政府的站长告诉墨者安全,他想要做一个网络安全防护,因为网站设计到了支付这一块的业务,所以要做网络安全防护,想要实时监测,如果有***发生需要第一时间知道情况。墨者安全告诉他可以的,那今天就讲讲企业网站怎么才能防御DDOS***?DDoS***实际是基于传统的DoS***之上演化出来的一种更为高级的***方式。传统DoS***属于单一的一对一方式。DO

    2020/03/30
  • 微信小程序WXS之谜小白攻略_小程序小白入门

    微信创造了 WXS ,除了提高性能,还有什么原因?微信为何要创造 WXSWXS(WeiXin Script)是微信创造的一套脚本语言,它的官方说法是:“WXS 与 JavaScript 是不同的语言,有自己的语法,并不和 JavaScript 一致”。那微信为何要脱离 JavaScript ,单独创造一套语言呢?这要从微信小程序的底层逻辑(运行环境)讲起。小

    2020/03/24
  • MVC和MVVM模型入门基础知识_模型入门百科

    MVC那时计算机世界天地混沌,浑然一体,然后出现了一个创世者,将现实世界抽象出模型形成model,将人机交互从应用逻辑中分离形成view,然后就有了空气、水、鸡啊、蛋什么的。——《前端MVC变形记》MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型)Model(模型)是应

    2020/03/23
  • TogetherJS基础指南网站实时协作JavaScript库_库小白入门

    快速开始通过在页面上包含两件事来快速入门。首先是JavaScript:// TogetherJS configuration would go here, but we’ll talk about that// later

    <script src="https://togetherjs.com/togetherjs-min

    2020/03/24
  • dio零基础入门_一个强大的Dart Http请求库

    dio零基础入门 GitHub:https://github.com/flutterchina/dio 简介描述:一个强大的Dart Http请求库 dio是一个强大的Dart H…

    2020/03/07
  • MutationObserver是什么?使用攻略_用法指南攻略

    MutationObserver概览MutationObserver interface可以用来监测DOM树的变化。MutationObserver 是旧的DOM3事件规范Mutation Events特性的一个替换。在DOM事件触发的时候,会触发MutationObserver中传入的callback。DOM监听是不会立刻开始的,必须调用observer(

    2020/03/20