如何在 Node.js 中使用 __dirname

介绍

__dirname 是一个环境变量,它告诉您包含当前正在执行的文件的目录的绝对路径。

在本文中,您将探索如何__dirname在您的 Node.js 项目中实现。

先决条件

要完成本教程,您需要:

构建您的目录

本教程将使用以下示例目录结构来探索__dirname工作原理。要开始您的 Node.js 项目,让我们组织您的目录和文件:

node-app
  ├──index.js
  ├──public
  ├──src
  │  ├──helpers.js
  │  └──api
  │      └──controller.js
  ├──cronjobs
  │  ├──pictures
  │  └──hello.js
  └──package.json

您可以使用__dirname来检查您的文件所在的目录:

控制器.js
console.log(__dirname)      // "/Users/Sam/node-app/src/api"
console.log(process.cwd())  // "/Users/Sam/node-app"
你好.js
console.log(__dirname)     // "/Users/Sam/node-app/cronjobs"
console.log(process.cwd()) // "/Users/Sam/node-app"

请注意,它__dirname具有不同的值,具体取决于您对其进行控制台处理的文件。process.cwd()方法还返回一个值,但以项目目录代替。__dirname变量始终返回文件所在位置的绝对路径。

使用目录

在本节中,您将探索如何使用__dirname来创建新目录、指向它们以及添加新文件。

制作新目录

要在您的index.js文件中创建一个新目录,请__dirname作为第一个参数插入path.join(),并将新目录的名称作为第二个参数插入

索引.js
const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, '/pictures');

fs.mkdirSync(dirPath); 

现在,您已经pictures在调用mdirSync()方法创建了一个新目录,其中包含__dirname绝对路径。

指向目录

另一个独特的功能是它能够指向目录。在您的index.js文件中,声明一个变量并将 的值__dirname作为第一个参数传入path.join(),并将包含静态文件的目录作为第二个参数:

索引.js
express.static(path.join(__dirname, '/public'));

在这里,您告诉 Node.js 用于__dirname指向public包含静态文件目录。

将文件添加到目录

您还可以将文件添加到现有目录。在您的index.js文件中,声明一个变量并包含__dirname作为第一个参数和要添加的文件作为第二个参数:

索引.js
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '/pictures');

fs.openSync(filePath, 'hello.jpeg');

openSync()如果文件不存在于您的目录中,则使用该方法将添加该文件。

结论

Node.js 为您提供了一种创建和指向目录的方法,以及使用模块化环境变量将文件添加到现有目录的方法。

如需进一步阅读,请查看 的Node.js 文档__dirname以及有关__dirname在 Express.js 框架中使用的教程

觉得文章有用?

点个广告表达一下你的爱意吧 !😁