【悄咪咪学Node.js】8.3 path.normalize()

86 阅读1分钟

path.normalize()

1. 前言

本系列课程对非功能性函数内容安排中,将插入一些在生产过程中可能会用到对应函数的例子。

本节课将会引导大家学习了解:

  • path.normalize() 的使用方法

学习完本节课程后,应该具有:

  • 使用 path 模块判断路径是否为绝对路径的能力

2. path.normalize()

path.normalize() 可以规范化传入的路径。若路径片段类型错误,会抛出 TypeError 异常。

2.1 代码例子

我们先来执行下面这段代码:

// 引入 path 模块
const path = require('path');

// 打印结果
console.log(__dirname);

let pre_normalize = __dirname + '/..';

console.log(pre_normalize);

let normalized = path.normalize(pre_normalize);

console.log(normalized);

结果:

/Users/programing/noneJS/path/normalize
/Users/programing/noneJS/path/normalize/..
/Users/programing/noneJS/path

Tips:path.normalize() 可以解析字符串中的 ... 来影响规范化后结果。

再执行下面这段代码:

// 引入 path 模块
const path = require('path');

// 打印结果
// ./normalize.txt 并不存在
console.log(path.normalize(__dirname +  '/normalize.txt'));

结果:

/Users/programing/noneJS/path/normalize/normalize.txt

Tips:path.normalize() 并不会检查路径是否真实存在。

继续执行下面这段代码:

// 引入 path 模块
const path = require('path');

// 打印结果
console.log(path.normalize([__dirname + './join.txt']));

结果:

internal/validators.js:125
    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object
    at validateString (internal/validators.js:125:11)
    at Object.normalize (path.js:1112:5)
    at Object.<anonymous> (/Users/programing/noneJS/path/normalize/path.normalize.js:11:18)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)

Tips:path.join() 只接收 String 类型的传参。

4. 小结

本节课程我们主要学习了 path.normalize()

重点如下:

  1. 重点1

    path.normalize() 不会校验路径是否存在。

  2. 重点2

    path.normalize() 只接收 String 类型的传参。