¿Cómo escribo esto para volver a subir los niveles padre 2 para encontrar un archivo?fs: ¿cómo localizo una carpeta principal?
fs.readFile(__dirname + 'foo.bar');
¿Cómo escribo esto para volver a subir los niveles padre 2 para encontrar un archivo?fs: ¿cómo localizo una carpeta principal?
fs.readFile(__dirname + 'foo.bar');
Prueba esto:
fs.readFile(__dirname + '/../../foo.bar');
Nota la barra diagonal al comienzo de la ruta relativa.
Parece que necesitará el módulo path
. (path.normalize
en particular)
var path = require("path"),
fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
Uso path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join
var path = require("path"),
fs = require("fs");
fs.readFile(path.join(__dirname, '../..', 'foo.bar'));
path.join()
se encargará de líder/barra final para usted y simplemente hacer lo correcto y usted no tiene que tratar de recordar cuando rachas posteriores existen y cuando no.
esta respuesta con 'path.join' es la forma correcta, la respuesta aceptada no debe seguirse, incluso desencadena' eslint' en 'airbnb-base preset', la regla [no-path-concat] (https: // eslint.org/docs/rules/no-path-concat) en particular, – revelt
100º Votación.Mi '__dirname' era' host/src/folder' y necesitaba 'host/folder' y esto funcionó para mí, no para la respuesta OP. – carkod
Si no está seguro de dónde está el padre, esto le dará la ruta;
var path = require('path'),
__parentDir = path.dirname(module.parent.filename);
fs.readFile(__parentDir + '/foo.bar');
Si otro módulo llama a la suya y que todavía le gustaría saber la ubicación del archivo principal que se ejecuta puede utilizar una modificación del código de Jason @:
var path = require('path'),
__parentDir = path.dirname(process.mainModule.filename);
fs.readFile(__parentDir + '/foo.bar');
De esa manera usted obtener la ubicación del script que realmente se está ejecutando.
Sé que es un poco exigente, pero todas las respuestas hasta ahora no son del todo correctas.
El objetivo de path.join() es eliminar la necesidad de que la persona que llama sepa qué separador de directorio utilizar (lo que hace que la plataforma de código sea independiente).
Técnicamente, la respuesta correcta sería algo así como:
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
me habría añadido esto como un comentario a la respuesta de Alex Wayne, pero todavía no lo suficientemente representante!
EDIT: de acuerdo con la observación de user1767586
'foo.bar' debería ser 'foo.bar'. Traté de hacer una edición pero las ediciones deben tener un mínimo de 6 caracteres (regla estúpida si me preguntas, nos impide editar pequeños errores tipográficos como este). – user1767586
Usted puede utilizar
path.join(__dirname, '../..');
La forma más fácil sería utilizar path.resolve
:
path.resolve(__dirname, '..', '..');
de hecho el correcto solución ya que no necesita resolver la carpeta uniendo '../' a la ruta –
que había estado tratando de que sin suerte pero yo sólo did 'fs.readFile (__ dirname + '/../../ foo.bar');' y funcionó. – fancy
Supongo que '__dirname' era algo así como' '/ foo/bar'' en lugar de ''/foo/bar/''. –
supongo que sí ... – fancy