Как мне написать это, чтобы вернуться на два родительских уровня в поисках файла?
fs.readFile(__dirname + 'foo.bar');
javascript
node.js
filesystems
фантазия
источник
источник
fs.readFile(__dirname + '/../../foo.bar');
и это сработало.__dirname
было что-то вроде'/foo/bar'
того'/foo/bar/'
.__dirname
может выглядеть/path/to/your/dir
, если вы говорите ,__dirname + ".."
что это/path/to/your/dir..
, что это несуществующая директория, а не/path/to/your
. Косая черта важна.Используйте 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()
будет обрабатывать начальные / конечные косые черты за вас и просто делать правильные вещи, и вам не нужно пытаться запоминать, когда конечные косые черты существуют, а когда нет.источник
path.join
правильным путем, принятый ответ не последуют, она даже вызываетeslint
наairbnb-base preset
, правило не траектория-CONCAT в частности__dirname
былhost/src/folder
и мне нужен,host/folder
и это сработало для меня, а не ответ OP.path.join(__dirname, '..', '..', 'foo.bar')
Я знаю, что это немного придирчиво, но пока все ответы не совсем правильные.
Задача path.join () состоит в том, чтобы избавить вызывающего абонента от необходимости знать, какой разделитель каталогов использовать (делая код независимым от платформы).
Технически правильный ответ будет примерно таким:
var path = require("path"); fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
Я бы добавил это как комментарий к ответу Алекса Уэйна, но пока недостаточно репутации!
РЕДАКТИРОВАТЬ: согласно наблюдению пользователя 1767586
источник
Самый простой способ - использовать
path.resolve
:path.resolve(__dirname, '..', '..');
источник
../
к путиПохоже, вам понадобится
path
модуль. (path.normalize
в частности)var path = require("path"), fs = require("fs"); fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
источник
Если другой модуль вызывает ваш, и вы все равно хотите знать, где находится главный запускаемый файл, вы можете использовать модификацию кода @Jason:
var path = require('path'), __parentDir = path.dirname(process.mainModule.filename); fs.readFile(__parentDir + '/foo.bar');
Таким образом вы узнаете, где именно запускается скрипт.
источник
Если вы не уверены в том, где находится родитель, это укажет вам путь;
var path = require('path'), __parentDir = path.dirname(module.parent.filename); fs.readFile(__parentDir + '/foo.bar');
источник
Ты можешь использовать
path.join(__dirname, '../..');
источник
Я запускаю электронное приложение, и я могу получить родительскую папку по path.resolve ()
родитель 1 уровень:
path.resolve(__dirname, '..') + '/'
родительский 2 уровня:
path.resolve(__dirname, '..', '..') + '/'
источник
это также будет работать:
fs.readFile(`${__dirname}/../../foo.bar`);
источник
Это отлично работает
path.join(__dirname + '/../client/index.html')
const path = require('path') const fs = require('fs') fs.readFile(path.join(__dirname + '/../client/index.html'))
источник