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, время: 03:35. |