Node.js и fs-extra
Здравствуйте.
Подскажите пожалуйста, не могу понять логику работы функции fs.outputJson() Если она не может найти файл то будет создавать его, а дело в том что я немного запутался в логике восприятия пути к файлам. Как пример, вот такое дерево каталогов: module -index.js // тут запускается функция fs.outputJson() dir -foo // в этом каталоге создание файла --exemple.json И так, к примеру если указать так:
fs.outputJson('../dir/foo/file.json', {name: "foo"})
По какой-то причине файл не создастся, что для меня кажется непонятным ведь путь к директории указан правильно. А если указать так:
fs.outputJson(path.resolve(__dirname, '..', 'dir', 'foo', 'file.json'), {name: "foo"})
То файл будет создан. Это из-за особенности функции path.resolve() которая ставит слеши в нужную строну? Тогда почему такой вариант будет работать?
fs.readdir('../dir/foo')
Объясните пожалуйста почему так происходит, не могу понять. (Документацию читал но не нашёл объяснения этому) |
Цитата:
Мало того. Указывая __dirname используется абсолютный путь. |
Цитата:
|
Raadsert, пока ты кидаешь огрызки своих программ - ничего путнего не ответить. :no:
Делай полный тестовый пример. Описывай какая операционка у тебя на сервере. Тогда твой пример при желании можно будет потестить у себя. Я в своих программах использую вот такой вариант касательно путей Цитата:
|
Цитата:
Дерево каталогов: module -index.js // тут запускается функция fs.outputJson() dir -foo // в этом каталоге создание файла --exemple.json Код из файла index.js:
const fs = require('fs-extra');
const length = fs.readdirSync('../dir/foo').length;
length выдаёт значение количества файлов в каталоге foo. |
Цитата:
Но ты не указал состав package.json :( У меня он получился вот такой
{
"name": "module",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"fs-extra": "^10.0.1"
}
}
Я взял твой пример... Запустил... Потом дописал то что у тебя не работало... И оно у меня прекрасно отработало. Даже на вин-операционке
const fs = require('fs-extra');
const length = fs.readdirSync('../dir/foo').length
console.log(length)
fs.outputJson('../dir/foo/file.json', {name: "foo"})
Т.е. файл file.json благополучно был создан по указанному пути. |
Цитата:
fs.readdirSync('../dir/foo').length
а это нет
fs.outputJson('../dir/foo/file.json', {name: "foo"})
Возможно у вас есть какие то предположения о том из-за чего это может происходить? |
Цитата:
Если нет - значит это у тебя какие-то особенности. |
Цитата:
|
Цитата:
fs.outputJson(path.resolve(__dirname, '..', 'dir', 'foo', 'file.json'), {name: "foo"})
А такой нет:
fs.outputJson('../dir/foo/file.json', {name: "foo"})
|
| Часовой пояс GMT +3, время: 07:21. |