stackoverflow 地址

概要

Node.js 中,__dirname 总是指向被执行 js 文件的绝对路径,所以当你在 /d1/d2/myscript.js 文件中写了 __dirname, 它的值就是 /d1/d2

相反,./ 会返回你执行 node 命令的路径,例如你的工作路径。

有一个特殊情况是在 require() 中使用 ./ 时,这时的路径就会是含有 require() 的脚本文件的相对路径。

例如

假设有如下目录结构

/dir1/dir2pathtest.js

然后在 pathtest.js 中,有如下代码

var path = require("path");
console.log(". = %s", path.resolve("."));
console.log("__dirname = %s", path.resolve(__dirname));

然后执行了下面命令

cd /dir1/dir2
node pathtest.js

将会得到

. = /dir1/dir2
__dirname = /dir1/dir2

. 是你的当前工作目录,在这个例子中就是 /dir1/dir2__dirnamepathtest.js 的文件路径,在这个例子中就是 /dir1/dir2

然而,如果我们的工作目录是 /dir1

cd /dir1
node dir2/pathtest.js

将会得到

. = /dir1
__dirname = /dir1/dir2

此时,. 指向我们的工作目录,即 /dir1__dirname 还是指向 /dir1/dir2

require 中使用 .

如果在 dir2/pathtest.js 中调用了 require 方法,去引入位于 dir1 目录的 js 文件,你需要写成

require('../thefile')

因为 require 中的路径总是相对于包含它的文件,跟你的工作目录没有关系。

更多参考:浅析 NodeJs 的几种文件路径

Node.js 中 __dirname 和 ./ 的区别相关推荐

  1. 2021-09-11 consolidate 模板引擎整合库,Node.js 中 __dirname 和 ./ 的区别

    consolidate 模板引擎整合库[适配] npm install consolidate 在工作路径的views目录下,新建1.ejs <!DOCTYPE html> <htm ...

  2. node.js中exports与module.exports的区别分析

    前言 关于Node.js中的exports和module.exports,很多时候都比较容易让人混淆,弄不清楚两者间的区别.那么我们就从头开始理清这两者之间的关系. 来源 在开发Node.js应用的时 ...

  3. Node.js中package.json中库的版本号详解(^和~区别)

    Node.js中package.json中库的版本号详解(^和~区别) 当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号 ...

  4. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  5. node mongoose_如何使用Express,Mongoose和Socket.io在Node.js中构建实时聊天应用程序

    node mongoose by Arun Mathew Kurian 通过阿伦·马修·库里安(Arun Mathew Kurian) 如何使用Express,Mongoose和Socket.io在N ...

  6. node.js中模块_在Node.js中需要模块:您需要知道的一切

    node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...

  7. boa支持https_Boa: 在 Node.js 中使用 Python

    Hello,大家好,有一段时间不见了. 这次主要给大家带来一个好东西,它的主要用途就是能让大家在 Node.js 中使用 Python 的接口和函数.可能你看到这里会好奇,会疑惑,会不解,我 Node ...

  8. Node.js模块化开发||Node.js中模块化开发规范

    JavaScript开发弊端 a.js b.js JavaScript在使用时存在两大问题,文件依赖和命名冲突. 生活中的模块化开发 软件中的模块化开发 app.j user.一个功能就是一个模块,多 ...

  9. PHP和Node.js开发之间有什么区别

    在很长一段时间内,决定在Node.js和PHP之间进行选择是一件很麻烦的事情,但对于后端程序员来说,这一直很麻烦,但它从未影响过开发人员.但是事情很快就发生了变化,现在开发人员必须选择其中之一.Nod ...

最新文章

  1. 刘知远 陈慧敏:流言止于“智”者——网络虚假信息的特征与检测
  2. 脚本编程语言python语言-python算的上脚本语言吗
  3. 36条网络安全术语盘点——Vecloud
  4. matlab保存变量的值,怎么不能保存之前的变量值?求解
  5. android开发 apk文件,android开发中,将数据库文件与APK一起发布?
  6. RUNOOB python 67 数组的元素互换
  7. javascript学习系列(17):数组中的find方法
  8. 使用vue+webpack从零搭建项目
  9. HDU 2844 Coins (多重背包)
  10. 简明python教程:数据结构
  11. 建筑施工技术【22】
  12. 3D体感试衣镜,实现虚拟试穿,提升顾客的购物体验!
  13. Kali与编程:小白黑客是如何安装Centos8的?(下节更精彩)
  14. Solution: Cannot start Microsoft outlook. Cannot open the outlook window. Invalid xml
  15. 卷积码编码和BCJR译码
  16. 手动调整Ubuntu16系统的分辨率
  17. python实现流媒体相关示例
  18. java中的length属性,length()方法,size()方法
  19. 适用于嵌入式单片机的差分升级通用库+详细教程
  20. OSI7层模型数据分层传输的过程

热门文章

  1. 荒岛余生2java攻略_荒岛余生2
  2. 卸载Win10右下角资讯和兴趣(天气)
  3. VPP DPDK,不是翻墙!!
  4. Python编程-让繁琐的工作自动化(十一)从Web爬取信息
  5. 文件压缩zip(浏览器下载)
  6. STM32 F105 USB CDC host
  7. 配置华为s系列交换机mode lacp
  8. IPv6下的DHCPv6
  9. 利用PHP编程生成蜘蛛访问记录txt文档
  10. linux系统克隆后eth0不见了(IP地址没有了)