Size: a a a

JavaScript Noobs — сообщество новичков

2021 January 23

gk

gena kkk in JavaScript Noobs — сообщество новичков
const getData = (config) => {
 const type = path.extname(config);
 const filepath = path.resolve(process.cwd(), config);
 const data = fs.readFileSync(filepath, 'utf8');
 return [data, type];
};
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
данная функция может работать с абсолютными и относительными путями
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
я не могу настроить чтобы она правильно пути строила при указании "/адрес..." ,то есть от корня проекта
источник

d

dettrix in JavaScript Noobs — сообщество новичков
gena kkk
process.cwd() возвращает разные результаты, я думаю адрес рабочей текущей директории
*процесса. т.е. где файл запущен, там и по умолчанию его корень. если запустили пакет, а он подгружает другие файлы, этот путь будет все-равно один у всех
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
dettrix
*процесса. т.е. где файл запущен, там и по умолчанию его корень. если запустили пакет, а он подгружает другие файлы, этот путь будет все-равно один у всех
ясно, спасибо!
источник

d

dettrix in JavaScript Noobs — сообщество новичков
gena kkk
const getData = (config) => {
 const type = path.extname(config);
 const filepath = path.resolve(process.cwd(), config);
 const data = fs.readFileSync(filepath, 'utf8');
 return [data, type];
};
в path.resolve используйте один аргумент - название файла, path остальное сделает за вас.. плюс .extname это только расширение, у вас файл без имени?)) путь вы получите, но он будет не на название файла оканчиваться, а только на его расширение: "/home/project/.js" например🤷‍♂
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
dettrix
в path.resolve используйте один аргумент - название файла, path остальное сделает за вас.. плюс .extname это только расширение, у вас файл без имени?)) путь вы получите, но он будет не на название файла оканчиваться, а только на его расширение: "/home/project/.js" например🤷‍♂
функция экспортирует [data, type], type использует потом парсер.
источник

d

dettrix in JavaScript Noobs — сообщество новичков
gena kkk
функция экспортирует [data, type], type использует потом парсер.
попробую обьяснить по другому, если есть желание), точнее напишу образец, мне понадобятся три вещи:
1) вывод process.cwd()
2) что приходит в config
3) путь до папки от корня проекта, где лежит то, что вы ищете на основе входящего config
источник

KS

Konstantin Sedykh in JavaScript Noobs — сообщество новичков
dettrix
попробую обьяснить по другому, если есть желание), точнее напишу образец, мне понадобятся три вещи:
1) вывод process.cwd()
2) что приходит в config
3) путь до папки от корня проекта, где лежит то, что вы ищете на основе входящего config
не вник целиком в суть беседы, но абсолютные пути это зло. 🙂
источник

d

dettrix in JavaScript Noobs — сообщество новичков
согласен
источник

C

Chris in JavaScript Noobs — сообщество новичков
gena kkk
const getData = (config) => {
 const type = path.extname(config);
 const filepath = path.resolve(process.cwd(), config);
 const data = fs.readFileSync(filepath, 'utf8');
 return [data, type];
};
Да, а если придёт что-то в духе ../../../../etc/passwd?
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
dettrix
попробую обьяснить по другому, если есть желание), точнее напишу образец, мне понадобятся три вещи:
1) вывод process.cwd()
2) что приходит в config
3) путь до папки от корня проекта, где лежит то, что вы ищете на основе входящего config
Сейчас не за компом, но в конфиг поступает адрес до файла с которого считываются данные. Это может быть относительный путь от места нахождения в консоли, абсолютный эти два работают и ещё путь от корня папки "/корень папки./" это не работает
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
3) путь может быть разный, то есть пользователь может вбить адрес до любого файла и любой папке
источник

d

dettrix in JavaScript Noobs — сообщество новичков
т.е config относительный путь до любого файла через любую папку от корня проекта?
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
Он и абсолютным может быть
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
И от корня проекта
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
Не работает от корня проекта, когда первый элемент слэш
источник

d

dettrix in JavaScript Noobs — сообщество новичков
gena kkk
Не работает от корня проекта, когда первый элемент слэш
хм.. зачем тогда определять путь так.. определять его по всему config, path сумеет) и fs модуль работает на основе path..

я бы переписал так:

const getData = (config) => {
 const type = path.extname(config);
 if (path.isAbsolute(config) && !config.includes(process.cwd())) config = '.' + config;
 const pathFile = path.resolve(config);
 const data = fs.readFileSync(pathFile, 'utf8');
 return [data, type];
};
источник

d

dettrix in JavaScript Noobs — сообщество новичков
после тестов исправил, должно работать. хоть абсолютный, хоть относительный с точкой и слешем или с слешем без точки
источник

gk

gena kkk in JavaScript Noobs — сообщество новичков
dettrix
после тестов исправил, должно работать. хоть абсолютный, хоть относительный с точкой и слешем или с слешем без точки
Спасибо, буду вечером разбираться., за компом уже.
источник