node 项目中 __dirname / __filename 是什么,为什么有时候不能用?

__dirname 是 Node.js 中的一个特殊变量,表示当前执行脚本所在的目录的绝对路径。

__filename 同理,是 Node.js 中的一个特殊变量,表示当前执行脚本的绝对路径,包括文件名。

在 Node.js 中,__dirname / __filename是一个全局变量,可在任何地方使用,用于获取当前模块文件所在的目录路径。它不是由用户定义的,而是由 Node.js 运行时提供的。使用 __dirname/__filename 可以方便地构建文件的绝对路径 / 获取带有绝对路径的文件名,而不受当前工作目录的影响。

为什么有时候不能用 __dirname / __filename?

因为 __dirname 是一个全局变量,而不是一个模块的属性。因此,在 CommonJS 模块中,你可以直接使用 __dirname,但在 ES6 模块中,__dirname__filename 不再被支持,你需要使用 import.meta.url 来获取当前模块的 URL 信息。

如果你的项目中 package.json 中有 "type": "module", 这个字段那么你就不能直接使用 __dirname / __filename 了。

去掉 package.json 里面的"type": "module",就可以正常用了。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 06:38:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 06:38:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 06:38:04       82 阅读
  4. Python语言-面向对象

    2023-12-29 06:38:04       91 阅读

热门阅读

  1. 阿里云SSD云盘和ESSD云盘有什么区别?

    2023-12-29 06:38:04       56 阅读
  2. c++——list实现细节反思

    2023-12-29 06:38:04       50 阅读
  3. 【Bootstrap学习 day2】

    2023-12-29 06:38:04       56 阅读
  4. docker基础

    2023-12-29 06:38:04       49 阅读
  5. C语言 for 循环的所有应用

    2023-12-29 06:38:04       52 阅读
  6. SpringBoot 集成 Kafka消息中间件,Docker安装Kafka环境

    2023-12-29 06:38:04       52 阅读
  7. How to Replace One Character with Another in Bash Script

    2023-12-29 06:38:04       58 阅读
  8. kafka相关面试题及答案

    2023-12-29 06:38:04       37 阅读
  9. 常用的测试工具有10类

    2023-12-29 06:38:04       48 阅读
  10. 58.0/PhotoShop 图层的应用(详细版)

    2023-12-29 06:38:04       58 阅读