El método de unión del módulo de ruta en Node.js y la diferencia entre __dirname y ./

El método de unión del módulo de ruta en Node.js y la diferencia entre __dirname y ./

1. Método de unión

El método path.join() une todos los fragmentos de ruta dados usando un separador específico de la plataforma como delimitador, luego normaliza la ruta resultante.

Los fragmentos de ruta de longitud cero se ignoran. Si la cadena de ruta concatenada es una cadena de longitud cero, se devolverá '.', indicando el directorio de trabajo actual

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// 返回: '/foo/bar/baz/asdf'

path.join('foo', {
    
    }, 'bar');
// 抛出 'TypeError: Path must be a string. Received {}'

Lanza TypeError si algún fragmento de ruta no es una cadena

En segundo lugar, la diferencia entre __dirname y ./

__dirnameSiempre apunte a la ruta absoluta del archivo js ejecutado

ver un ejemplo

Cuando se escribe __dirname en el archivo /react-admin-server/routers/file-upload.js, su valor es /react-admin-server/routers

En su lugar ./, devolverá la ruta donde ejecutó el comando de nodo, por ejemplo, su ruta de trabajo

Hay un caso especial cuando se require()usa ./en , la ruta será la ruta relativa require()del archivo de

Veamos un ejemplo,
supongamos que tenemos la siguiente estructura de directorios

/react-admin-server
  /routers
    file-upload.js 

Luego, en file-upload.js, está el siguiente código y luego ejecuta el siguiente comando en la terminal

cd /react-admin-server/routers
node file-upload.js 
var path = require("path");
console.log(path.resolve(".")); //  /react-admin-server/routers
console.log(path.resolve(__dirname)); //  /react-admin-server/routers

.es su directorio de trabajo actual, en este caso /react-admin-server/routers, __dirnamees file-upload.jsla ruta del archivo de, en este caso/react-admin-server/routers

Sin embargo, si nuestro directorio de trabajo es/react-admin-server

cd /react-admin-server
node routers/file-upload.js 

obtendrá

/react-admin-server
/react-admin-server/routers

En este punto, .apunte a nuestro directorio de trabajo, es decir /react-admin-server, __dirnametodavía apunte a /react-admin-server/routers.

3. Aplicación integral

//__dirname表示当前文件所在的根路径,也就是/routers,然后..表示向上退一级,也就是到了项目根目录,然后public/upload表示到了这个目录
const dirPath = path.join(__dirname, '..', 'public/upload')

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41880073/article/details/123096052
Recomendado
Clasificación