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 ./
__dirname
Siempre 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
, __dirname
es file-upload.js
la 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
, __dirname
todavía apunte a /react-admin-server/routers
.
3. Aplicación integral
//__dirname表示当前文件所在的根路径,也就是/routers,然后..表示向上退一级,也就是到了项目根目录,然后public/upload表示到了这个目录
const dirPath = path.join(__dirname, '..', 'public/upload')