Node.js 中 __dirname 和 ./ 的区别
使用任何技术都需要与文件和目录进行交互。文件和目录保持树状结构以便于访问。使用 Node.js 还需要使用可以使用不同命令获得的文件路径来访问文件。在 Node.js 中有两种获取当前目录的方法。但是,它们彼此完全不同。
- __目录名
- ./
节点脚本中的 __dirname 返回当前 JavaScript 文件所在文件夹的路径。 __filename 和 __dirname 用于获取当前执行文件的文件名和目录名。
./ 给出当前工作目录。它的工作原理类似于 process.cwd() 方法。当前工作目录是执行节点命令的文件夹的路径。然而,当前工作目录可能会在脚本执行期间通过 process.chdir() API 的使用而改变。
./ 给出当前执行文件的路径的唯一情况是它与相对于当前工作目录的 require() 命令一起使用。 ./ 允许我们基于文件结构导入模块。
当节点与当前执行的文件在同一目录中运行时,__dirname 和 ./ 都给出相似的结果,但当节点从其他目录运行时产生不同的结果。
__dirname | ./ |
---|---|
Gives absolute path of the directory that contains the currently executing file. | Used to display the path where the terminal is opened, which is the current working directory. |
Returns a pointer to a string i.e. the parent directory of currently executing file. | Returns a pointer to a string i.e. the current working directory. |
Works similar to process.cwd() until the node is run from a directory which is different from the directory where the JavaScript file is stored. | Works similar to process.cwd() until used with require() command. |
示例:以下示例演示了当从存储 JavaScript 文件的同一目录运行节点时 __dirname 和 ./ 的工作方式
示例 1:
// Node.js program to demonstrate the
// methods to display directory
// Include path module
var path = require("path");
// Methods to display directory
console.log("__dirname: ", __dirname);
console.log("process.cwd() : ", process.cwd());
console.log("./ : ", path.resolve("./"));
console.log("filename: ", __filename);
运行步骤:
- 打开记事本编辑器并粘贴以下代码并将其保存为 .js 扩展名。例如:
index.js
- 现在打开命令提示符并移动到代码所在的目录。
- 键入
node index.js
命令以运行代码。
输出:
示例 2:
// Node.js program to demonstrate the
// methods to display directory
// Include path module
var path = require("path");
// Methods to display directory
console.log("__dirname: ", __dirname);
console.log("process.cwd() : ", process.cwd());
console.log("./ : ", path.resolve("./"));
console.log("filename: ", __filename);
运行步骤:
- 打开记事本编辑器并粘贴以下代码并将其保存为 .js 扩展名。例如:
index.js
- 现在打开命令提示符,如果您的路径是桌面,则键入 cd.. 以移动其父目录。
- 键入
node Desktop/index.js
命令以运行代码。
输出: