我使用的EJS模块,并希望参考根目录中的所有文件。在过去,这将是__dirname,但根据此描述,它是不同的。这些说明很有帮助(https://blog.logrocket.com/alternatives-dirname-node-js-es-modules/),但我似乎仍然找不到正确的组合。
例如,我在根目录中有test.mjs,在脚本目录(scripts/test2.mjs)中有test2.mjs
test.mjs
import {fileURLToPath} from 'url';
import { dirname } from "node:path";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
console.log("test.mjs produces " + __dirname)
输出
test.mjs produces rootdir
test2.mjs
import {fileURLToPath} from 'url';
import { dirname } from "node:path";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
console.log("test2.mjs produces " + __dirname)
输出
test2.mjs produces rootdir/scripts
1条答案
按热度按时间fsi0uk1n1#
启动应用程序的初始脚本的完整路径位于:
而且,这可以从项目中的任何脚本访问,无论它位于何处,它总是返回相同的文件名。
所以,如果你想去掉文件名,只得到初始脚本的目录,你可以这样做:
根据您的项目脚本的结构以及您想要的结构中的确切目录,您可能希望从该目录向上或向下移动,但它至少为您提供了结构中的已知和一致的位置,可以从项目中的任何脚本访问。