node全局变量__dirname与__filename的区别

node全局变量__dirname与__filename的区别

简介

在Node.js中,__dirname 和 __filename 都是全局变量。它们可以在任何地方直接访问,不需要引入其他模块。它们可以用于获取当前模块文件的完整路径和文件名。

__dirname

__dirname 代表当前模块文件所在的目录的完整路径,而不包括模块文件本身的名称。

console.log(__dirname); // 输出 /Users/xxx/Documents

__filename

__filename 代表当前模块文件的完整路径和文件名,包括所在目录和文件名。

console.log(__filename); // 输出 /Users/xxx/Documents/test.js

区别

__dirname和__filename之间的关键区别在于后者包含当前模块文件的名称,而前者只包含当前模块文件所在的目录。

例如,您可以使用__dirname创建文件路径:

const path = require('path');

const fullPath = path.join(__dirname, './data/data.json'); // /Users/xxx/Documents/data/data.json

这种写法可以更加灵活,无论模块文件在哪里,都可以根据__dirname确定的目录结构来访问其他文件。

示例

示例 1

在此示例中,我们从本地保存的JSON文件中读取数据。利用__dirname我们可以轻松获取文件的完整路径。

const fs = require('fs');
const path = require('path');

const filePath = path.join(__dirname, './data/data.json');

fs.readFile(filePath, (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(JSON.parse(data));
});

示例 2

在此示例中,我们使用__filename和__dirname打印当前正在运行的模块的完整路径和名称。

console.log('__filename: ', __filename);
console.log('__dirname: ', __dirname);

输出示例:

__filename:  /Users/xxx/Documents/test.js
__dirname:  /Users/xxx/Documents

总的来说,__dirname和__filename都是非常有用的全局变量,用于获取当前模块文件所在的位置信息。它们的区别在于 __filename 包含文件名,而 __ dirname 只包含所在目录的完整路径。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node全局变量__dirname与__filename的区别 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 手把手带你安装多个node版本

    以下是手把手带你安装多个Node.js版本的完整攻略。 准备工作 在开始安装之前,你需要在本地已经安装好以下软件: Node.js的版本管理工具 nvm(Node Version Manager) Git版本控制工具(Windows用户可以在Git官网下载安装,Mac用户可以通过Homebrew安装) 安装nvm 打开终端(命令行窗口),在终端中输入以下命令…

    node js 2023年6月8日
    00
  • nodejs报digital envelope routines::unsupported错误的最新解决方法

    当在Node.js中使用TLS(Transport Layer Security)连接时,可能会遇到digital envelope routines::unsupported错误,这个错误通常表示您的证书格式不被TLS支持。以下是最新的解决方法: 1. 查看证书格式 首先需要使用以下命令来查看您的证书格式: openssl x509 -in /path/t…

    node js 2023年6月8日
    00
  • 详解使用Nuxt.js快速搭建服务端渲染(SSR)应用

    使用Nuxt.js快速搭建服务端渲染(SSR)应用的完整攻略包含以下步骤: 1. 创建一个新的Nuxt.js项目 你可以通过运行以下命令,创建一个新的Nuxt.js项目: npx create-nuxt-app my-app 然后,你可以按照提示进行新项目的配置,例如选择应用运行的模式(SSR或静态生成)、添加需要的模块等。最后,你可以在命令行中使用以下命令…

    node js 2023年6月9日
    00
  • Koa 中的错误处理解析

    Koa 是一个现代化的 Node.js 框架,具有轻量、高效、可定制等特点。在使用 Koa 进行开发的过程中,经常需要对错误进行处理。本文将为大家详细讲解如何在 Koa 中进行错误处理。 1. 错误处理的重要性 在任何项目中,错误都是难免的。对错误进行及时有效的处理,能够提高程序的鲁棒性和健壮性;而忽略错误的处理,则容易导致应用出现不可预料的问题,甚至引发系…

    node js 2023年6月8日
    00
  • 为什么node.js不适合大型项目

    为什么Node.js不适合大型项目? Node.js很适合用于构建高性能、事件驱动、非阻塞的应用程序,因为它是基于V8引擎和事件循环构建的,可以处理大量并发连接。但是,Node.js并不是适合所有类型的应用程序。在以下情况下,Node.js可能不适合大型项目: 长时间运行的计算密集型任务 对于那些需要大量计算和复杂操作的应用程序来说,Node.js可能会遇到…

    node js 2023年6月8日
    00
  • CentOS7中源码编译安装NodeJS的完整步骤

    以下是 CentOS7 中源码编译安装 NodeJS 的完整步骤: 准备工作 在开始之前,我们需要先进行一些准备工作。 安装依赖项 需要安装以下依赖项: sudo yum update sudo yum install gcc c++ make sudo yum install openssl-devel sudo yum install wget 下载 N…

    node js 2023年6月8日
    00
  • vue-admin-box第一步npm install时报错的处理

    对于vue-admin-box在npm install时报错的处理,可以按照以下完整攻略进行处理: 1. 查看报错信息 当npm install时出现错误时,首先需要查看报错信息。报错信息会提示错误的类型、位置等相关信息,进而帮助我们分析原因。 例如,如果错误提示为“Error: Cannot find module ‘xxx’”,这说明需要安装xxx模块。…

    node js 2023年6月8日
    00
  • 在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法

    作为网站作者,我很乐意为你详细讲解如何在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法。 首先,需要说明的是,simple-mock 是一个轻量级的 JavaScript 用于数据模拟的库。它允许你模拟 API 的数据,并且使你的前端开发更加流畅和便捷。现在,我将为您提供使用 simple-m…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部