Node.js 中 __dirname 和 ./ 的区别
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
,__dirname
是 pathtest.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 和 ./ 的区别相关推荐
- 2021-09-11 consolidate 模板引擎整合库,Node.js 中 __dirname 和 ./ 的区别
consolidate 模板引擎整合库[适配] npm install consolidate 在工作路径的views目录下,新建1.ejs <!DOCTYPE html> <htm ...
- node.js中exports与module.exports的区别分析
前言 关于Node.js中的exports和module.exports,很多时候都比较容易让人混淆,弄不清楚两者间的区别.那么我们就从头开始理清这两者之间的关系. 来源 在开发Node.js应用的时 ...
- Node.js中package.json中库的版本号详解(^和~区别)
Node.js中package.json中库的版本号详解(^和~区别) 当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号 ...
- 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session
1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...
- node mongoose_如何使用Express,Mongoose和Socket.io在Node.js中构建实时聊天应用程序
node mongoose by Arun Mathew Kurian 通过阿伦·马修·库里安(Arun Mathew Kurian) 如何使用Express,Mongoose和Socket.io在N ...
- node.js中模块_在Node.js中需要模块:您需要知道的一切
node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...
- boa支持https_Boa: 在 Node.js 中使用 Python
Hello,大家好,有一段时间不见了. 这次主要给大家带来一个好东西,它的主要用途就是能让大家在 Node.js 中使用 Python 的接口和函数.可能你看到这里会好奇,会疑惑,会不解,我 Node ...
- Node.js模块化开发||Node.js中模块化开发规范
JavaScript开发弊端 a.js b.js JavaScript在使用时存在两大问题,文件依赖和命名冲突. 生活中的模块化开发 软件中的模块化开发 app.j user.一个功能就是一个模块,多 ...
- PHP和Node.js开发之间有什么区别
在很长一段时间内,决定在Node.js和PHP之间进行选择是一件很麻烦的事情,但对于后端程序员来说,这一直很麻烦,但它从未影响过开发人员.但是事情很快就发生了变化,现在开发人员必须选择其中之一.Nod ...
最新文章
- 刘知远 陈慧敏:流言止于“智”者——网络虚假信息的特征与检测
- 脚本编程语言python语言-python算的上脚本语言吗
- 36条网络安全术语盘点——Vecloud
- matlab保存变量的值,怎么不能保存之前的变量值?求解
- android开发 apk文件,android开发中,将数据库文件与APK一起发布?
- RUNOOB python 67 数组的元素互换
- javascript学习系列(17):数组中的find方法
- 使用vue+webpack从零搭建项目
- HDU 2844 Coins (多重背包)
- 简明python教程:数据结构
- 建筑施工技术【22】
- 3D体感试衣镜,实现虚拟试穿,提升顾客的购物体验!
- Kali与编程:小白黑客是如何安装Centos8的?(下节更精彩)
- Solution: Cannot start Microsoft outlook. Cannot open the outlook window. Invalid xml
- 卷积码编码和BCJR译码
- 手动调整Ubuntu16系统的分辨率
- python实现流媒体相关示例
- java中的length属性,length()方法,size()方法
- 适用于嵌入式单片机的差分升级通用库+详细教程
- OSI7层模型数据分层传输的过程