zoukankan      html  css  js  c++  java
  • 关于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无关)

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

     xxxNode.js_in_practicechapter twogroup
    

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

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

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

    xxxNode.js_in_practicechapter twogroupindex.js

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

  • 相关阅读:
    2020.8.8第三十三天
    2020.8.7第三十二天
    2020.8.6第三十一天
    《大道至简》读后感
    2020.8.5第三十天
    2020.8.4第二十九天
    2020.8.3第二十八天
    2020.8.2第二十七天
    MySQL学习笔记(31):监控
    MySQL学习笔记(30):高可用架构
  • 原文地址:https://www.cnblogs.com/yinhaiying/p/10782303.html
Copyright © 2011-2022 走看看