在 Node.js 中获取父目录名称
Posted
技术标签:
【中文标题】在 Node.js 中获取父目录名称【英文标题】:Get parent directory name in Node.js 【发布时间】:2017-08-14 19:57:36 【问题描述】:我正在使用 Node.js,我想获取一个父目录名
文件。我有文件"../test1/folder1/FolderIWant/test.txt"
。
我想得到"FolderIWant"
。
我试过了:
var path = require('path');
var parentDir = path.dirname(filename);
但它返回../test1/folder1/FolderIWant
。
【问题讨论】:
【参考方案1】:虽然这里的答案有些奏效,但我发现使用流行的 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`)
这里可能不是最佳答案,但其他答案未涵盖的选项。
【讨论】:
【参考方案2】:const path = require("path")
path.dirname(path.basename(__dirname))
【讨论】:
【参考方案3】:没有像路径这样的任何节点模块的最简单方法。您可以通过以下方式轻松获取根文件夹名称。
var rootFolder = __dirname.split('/').pop();
console.log(rootFolder);
【讨论】:
【参考方案4】:process.mainModule
属性在 v14.0.0
中已弃用。如果 foo.js 由 node foo.js
运行(例如 somedir/foo.js"),
const path = require("path");
module.exports = path.dirname(require.main.filename);
结果:一些目录
Use require.main instead
【讨论】:
【参考方案5】:Better use @danielwolf's answer instead
使用split()
和pop()
:
path.dirname(filename).split(path.sep).pop()
【讨论】:
【参考方案6】:使用 06-2019 的节点时,我遇到了仅访问 filename
的问题。
因此,我只是稍微修改了一下并使用了:
path.dirname(__filename).split(path.sep).pop()
所以现在你得到的是你所在的当前目录的目录名,而不是完整路径。虽然之前的答案似乎对其他人有用,但对我来说,它导致了问题,因为节点正在寻找一个 const 或一个变量,但找不到。
【讨论】:
【参考方案7】:const path = require('path');
module.exports = path.dirname(process.mainModule.filename)
在任何地方使用它来获取根目录
【讨论】:
它在 mainModule 处显示错误。未解析的变量 mainModule【参考方案8】:Daniel Wolf 的回答是正确的,如果您想要父目录的完整路径:
require('path').resolve(__dirname, '..')
【讨论】:
【参考方案9】:你要的是path.basename
:
path.basename(path.dirname(filename))
【讨论】:
更好、更清洁的解决方案。以上是关于在 Node.js 中获取父目录名称的主要内容,如果未能解决你的问题,请参考以下文章