NodeJS -将相对路径转换为绝对路径

ckx4rj1h  于 2023-02-21  发布在  Node.js
关注(0)|答案(4)|浏览(252)

在我的 * 文件系统 * 中,我的工作目录如下:

    • C:\温度\a\b\c\d**

在b\bb下面有一个文件:tmp.txt

    • C:\临时文件\a\b\bb\临时文件. txt**

如果我想从我的工作目录转到这个文件,我将使用这个路径:

"../../bb/tmp.txt"

如果文件不存在,我想记录完整路径并告诉用户:

  • *"文件C:\temp\a\b\bb\tmp.txt不存在"**.
    • 我的问题:**

我需要一些函数来 * 转换 * 相对路径:"../../bb/tmp.txt"转换为绝对值:"目录:临时文件. txt"
在我的代码中应该是这样的:

console.log("The file" + convertToAbs("../../bb/tmp.txt") + " is not exist")
camsedfj

camsedfj1#

使用path.resolve
尝试:

resolve = require('path').resolve
resolve('../../bb/tmp.txt')
vx6bjr1n

vx6bjr1n2#

您还可以使用__dirname and __filename表示绝对路径。

7lrncoxx

7lrncoxx3#

    • 如果您不能使用require:**
const path = {
    /**
    * @method resolveRelativeFromAbsolute resolves a relative path from an absolute path
    * @param {String} relitivePath relative path
    * @param {String} absolutePath absolute path
    * @param {String} split default?= '/', the path of the filePath to be split wth 
    * @param {RegExp} replace default?= /[\/|\\]/g, the regex or string to replace the filePath's splits with 
    * @returns {String} resolved absolutePath 
    */
    resolveRelativeFromAbsolute(relitivePath, absolutePath, split = '/', replace = /[\/|\\]/g) {
        relitivePath = relitivePath.replaceAll(replace, split).split(split);
        absolutePath = absolutePath.replaceAll(replace, split).split(split);
        const numberOfBacks = relitivePath.filter(file => file === '..').length;
        return [...absolutePath.slice(0, -(numberOfBacks + 1)), ...relitivePath.filter(file => file !== '..' && file !== '.')].join(split);
    }
};
const newPath = path.resolveRelativeFromAbsolute('C:/help/hi/hello/three', '../../two/one'); //returns 'C:/help/hi/two/one'
mm9b1k5b

mm9b1k5b4#

你可以很容易地把它添加到你的包里。json:

"imports": {
    "#library/*": "./library/*"
}

在每个文件中,您可以使用以下语法导入库:

const db = require('#library/db.js');

IDE将自动检测db.js模块中的文件和可用函数。

如果你需要在你的目录中管理单独的包(每个包都有单独的package.json),你的问题就完全不同了:
你需要使用工作区来管理你的软件包在你的代表(monorepo)工作区的完整指南是在官方文档:
https://docs.npmjs.com/cli/v7/using-npm/workspaces/

相关问题