[英]Get parent directory name in Node.js
我正在使用 Node.js,我想获取文件的父目录名称。 我有文件"../test1/folder1/FolderIWant/test.txt"
。
我想得到"FolderIWant"
。
我努力了:
var path = require('path');
var parentDir = path.dirname(filename);
但它返回../test1/folder1/FolderIWant
。
你想要的是path.basename
:
path.basename(path.dirname(filename))
丹尼尔沃尔夫的回答是正确的,如果你想要父目录的完整路径:
require('path').resolve(__dirname, '..')
从 06-2019 开始使用 node,我遇到了一个问题,只能访问filename
。 所以相反,我只是稍微修改了一下并使用了:
path.dirname(__filename).split(path.sep).pop()
所以现在你得到了你所在的当前目录的目录名,而不是完整路径。 尽管以前的答案似乎对其他人有用,但对我而言,它引起了问题,因为节点正在寻找常量或变量但找不到。
const path = require('path');
module.exports = path.dirname(process.mainModule.filename)
在任何地方使用它来获取根目录
process.mainModule
属性在v14.0.0
已弃用。 如果 foo.js 由node foo.js
运行(例如 somedir/foo.js”),
const path = require("path");
module.exports = path.dirname(require.main.filename);
结果:somedir
const path = require("path")
path.dirname(path.basename(__dirname))
最简单的方法,没有像路径这样的任何节点模块。 您可以通过以下方式轻松获取根文件夹名称。
var rootFolder = __dirname.split('/').pop();
console.log(rootFolder);
虽然这里的答案有些奏效,但我发现使用流行的app-root-path模块是一个更好的锚点,从中指定路径。
import { path as arp } from 'app-root-path'
import path from 'path'
const root = path.resolve(arp, '../') // the parent of the root path
export const rootDirname = root
示例用法如下:
import { rootDirname } from './functions/src/utils/root-dirname'
import { getJsonFromFile } from './app/utils/get-json-from-file'
const firebaseJson = getJsonFromFile(`${rootDirname}/firebase.json`)
也许不是这里的最佳答案,而是其他答案未涵盖的选项。
典型的__dirname
解决方案在 ESM scope 中不起作用。 为了在目录树中上移一级,我想出了以下解决方案:
import { fileURLToPath } from "url";
import path from "path";
const __filename = fileURLToPath(import.meta.url);
// First find out the __dirname, then resolve to one higher level in the dir tree
const __dirname = path.resolve(path.dirname(__filename), "../");
如果您只需要文件所在的绝对目录路径,则可以path.resolve()
调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.