首页 > 其他分享 >vite.config.js 无法使用__dirname的解决方法

vite.config.js 无法使用__dirname的解决方法

时间:2023-01-09 14:45:22浏览次数:38  
标签:__ fileURLToPath url js meta import dirname

__dirnamecommonjs规范的内置变量。如果使用了esm 是不会自动注入这个变量的。

commonjs中,注入了__dirname__filename, module, exports, require五个内置变量用于实现导入导出的能力。而在 esm 中实现方式是不一样的。

esm 中,显然模块的导入导出使用 export/import ,自然不会再用 exports/require,同理__dirname__filename 也有对应的写法。

// 方法一
import { URL, fileURLToPath } from "node:url";

// 获取__filename
function getCurrnetFile () {
    return fileURLToPath(import.meta.url);
}
// 获取__dirname
function getCurrnetDir () {
    const url = new URL(".", import.meta.url);
    return fileURLToPath(url);
}

// 方法二
import { dirname } from "node:path";
import { fileURLToPath } from "node:url";

// 获取__filename
function getCurrnetFile () {
    return fileURLToPath(import.meta.url);
}
// 获取__dirname
function getCurrnetDir () {
    const __filename = fileURLToPath(import.meta.url);
    const __dirname = dirname(__filename);
    return __dirname;
}

可以看到使用了一个关键API import.meta.url,其实 import.metaECMA规范的一部分:

The import.meta object exposes context-specific metadata to a JavaScript module. It contains information about the module, like the module’s URL.

言下之意,import.meta 提供了一个模块的上下文信息。

标签:__,fileURLToPath,url,js,meta,import,dirname
From: https://www.cnblogs.com/guojikun/p/17036997.html

相关文章

  • Ajax(Fetch&Axios)
    传统服务器传统服务器的结构是基于MVC模式Model--数据模型View--视图,用来呈现Controller--控制器,复杂加载数据并选择视图来呈现数据传统的服务器是直接为客户端......
  • JSON to TS 转化 Axios 请求类型约束
    JSONtoTS扩展插件的使用作用场景作用是快速转化React+TS的Axios拿回数据的类型约束定义 步骤一.获取数据当页面中发起请求成功,获取到接口所携带的数据时,cons......
  • Task 带参数和返回值的多线程调用
    staticvoidMain(string[]args){//无参数异步vartasks=newList<Task>();for(inti=0;i<5000;i++)......
  • 【学习笔记】动态SQL
    动态SQL1.概念动态SQL:动态SQL是MyBatis的强大特性之一。如果你使用过JDBC或其它类似的框架,你应该能理解根据不同条件拼接SQL语句有多痛苦,例如拼接时要确保不能......
  • Spring Boot 参数验证
    原文地址BeanValidation是在Java生态系统中实现验证逻辑的事实标准。它与Spring和SpringBoot很好地集成在一起。本教程介绍了所有主要的验证用例和每个用例的运......
  • Access denied Error code 1020 You do not have access to chat.openai.com. The si
    原因openAi对使用地区进行了进一步限制,原先还能不使用魔法访问,现在不行了,需要开着魔法访问。解决办法该方法OpenAI'sservicesarenotavailableinyourcountry.解决......
  • redis 雪崩、穿透、击穿、并发、缓存讲解以及解决方案
    1.缓存雪崩数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。 比如一个雪崩的简单过程1.redis......
  • 利用反射获取android.os.SystemProperties 属性
    记录一下项目用到的工具类importandroid.content.Context;importjava.lang.reflect.Method;publicclassSystemPropertyUtil{/***根据给定Key获取值.......
  • WC 2018 题解
    A若干套路拼起来的胖题。设这三棵树分别是\(T_1,T_2,T_3\)。沿用“CTSC2017暴力写挂”的思路,对第一棵树点分治,此时要处理的是以\(u\)为中心的一块在\(T_1\)上的连......
  • Unicode 码位
    Unicode码位Unicode是一种国际编码标准,可用于各种平台以及各种语言和脚本。Unicode标准定义了超过110万个码位。码位是一个整数值,范围从0到U+10FFFF(十进制1,11......