node小技巧
获取当前执行文件绝对路径方法
type为commonjs
javascript
// generate.js
require("./child/b.js")
console.log(`文件夹路径:${__dirname}`);
console.log(`文件路径:${__filename}`);
// b.js
console.log(`子模块文件夹路径:${__dirname}`);
console.log(`子模块文件路径:${__filename}`);
// 结果
子模块文件夹路径:/Users/fangjiaming/Desktop/lruri/child
子模块文件路径:/Users/fangjiaming/Desktop/lruri/child/b.js
文件夹路径:/Users/fangjiaming/Desktop/lruri
文件路径:/Users/fangjiaming/Desktop/lruri/generate.js
type为module
javascript
// generate.js
import path from "path"
import "./child/b.js"
const modulePath = new URL(import.meta.url).pathname;
const moduleDir = path.dirname(modulePath);
console.log(`文件夹路径:${moduleDir}`);
console.log(`文件路径:${modulePath}`);
// b.js
import path from "path"
const modulePath = new URL(import.meta.url).pathname;
const moduleDir = path.dirname(modulePath);
console.log(`子模块文件夹路径:${moduleDir}`);
console.log(`子模块文件路径${modulePath}`);
// 结果
子模块文件夹路径:/Users/fangjiaming/Desktop/lruri/child
子模块文件路径/Users/fangjiaming/Desktop/lruri/child/b.js
文件夹路径:/Users/fangjiaming/Desktop/lruri
文件路径:/Users/fangjiaming/Desktop/lruri/generate.js
额外知识
i
是 JavaScript 中一个元数据(meta-data)属性,它返回当前模块文件的 URL 地址。mport.meta.url __dirname
获取模块所属目录的绝对路径__filename
获取当前模块的文件路径