node.js - example - Nodejs rutas absolutas en ventanas con barra diagonal
path npm (4)
¿Puedo tener rutas absolutas con barras diagonales en windows en nodejs? Estoy usando algo como esto:
global.__base = __dirname + ''/'';
var Article = require(__base + ''app/models/article'');
Pero en Windows, la compilación falla ya que requiere algo como C:/Something/Something/apps/models/article
. Estoy usando webpack. Entonces, ¿cómo evitar este problema para que el requisito siga siendo el mismo, es decir, __base + ''app/models/src''
?
Aquí hay dos líneas para la ruta raíz completa con todas las barras diagonales en Windows (Windows 8 en mi caso) con solo el módulo Nodo de path
:
var path = require(''path'');
root = path.resolve(''./'').replace(////g, ''/'') + ''/'';
root
le mostrará la ruta completa al archivo donde invocó la path.resolve()
anterior.resolver path.resolve()
más cualquier ruta a continuación, que coincida con el argumento (./)
.
replace
utiliza ////g
regex para reemplazar todas las instancias de /
en el resultado path.resolve()
.
Esto es conveniente porque con path.resolve()
obtiene la ruta deseada resuelta dinámicamente. replace()
es una función nativa de JS, no es necesario cargar nada más.
@Megin: simplemente haga global.__base = __dirname.replace(////g, ''/'') + ''/'';
, y luego emitir la misma declaración de require
.
Finalmente lo hice así:
var slash = require(''slash'');
var dirname = __dirname;
if (process.platform === ''win32'') dirname = slash(dirname);
global.__base = dirname + ''/'';
Y luego para requerir var Article = require(__base + ''app/models/article'');
. Esto usa la barra diagonal del paquete npm (que reemplaza las barras invertidas por barras diagonales en las rutas y maneja algunos casos más)
Recomiendo en contra de esto, ya que es el nodo de parches en sí, pero ... bueno, no hay cambios en la forma en que se requieren las cosas.
(function() {
"use strict";
var path = require(''path'');
var oldRequire = require;
require = function(module) {
var fixedModule = path.join.apply(path, module.split(///|///));
oldRequire(fixedModule);
}
})();
Sé que es un poco tarde para responder, pero creo que mi respuesta ayudará a algunos visitantes.
En Node.js
puede obtener fácilmente su nombre de archivo actual y su directorio simplemente usando __filename
y __dirname
variables respectivamente.
Para corregir la barra inclinada hacia adelante y hacia atrás según su sistema, puede usar el módulo de path
de Node.js
var path = require(''path'');
Al igual que aquí hay una ruta desordenada y quiero que sea correcta si quiero usarla en mi servidor. Aquí el módulo de path
hace todo por ti.
var randomPath = "desktop // mi carpeta / / myfile.txt";
var correctedPath = path.normalize(randomPath); //that''s that
console.log(correctedPath);
desktop/my folder/myfile.txt
Si desea la ruta absoluta de un archivo, también puede utilizar la función de resolve
del módulo de path
var somePath = "./img.jpg";
var resolvedPath = path.resolve(somePath);
console.log(resolvedPath);
/Users/vikasbansal/Desktop/temp/img.jpg