Чтение файлов из каталога внутри приложения meteor
Как я могу прочитать общедоступный каталог в приложении meteor внутри пути my/server.
Я попытался использовать собственный 'fs'
пакет, но я продолжаю получать ошибку файла/каталога.
var fs = Npm.require('fs');
var files = fs.readdirSync('/public/soundfiles/');
Кто-нибудь использовал пакет файловой системы для чтения статических файлов внутри метеорного приложения?
Ответы
Ответ 1
Доступ к файлам без части "/public". В запущенном приложении Meteor каталог public
становится вашим корнем, и все, что находится в /public/whatever
, можно получить в /whatever
.
Кроме того, если вы играете с файлами, вы можете найти их полезными:
Ответ 2
Я узнал, что лучше загружать файлы в вашу личную папку, если вы не показываете их снаружи.
В моем случае мне нужно хранить загрузки XML и обрабатывать их.
Сначала я написал XML в общую папку, но это вызовет перезагрузку.
Затем я переименовал папку загрузки в /public/.#uploads, которая остановила бы перезагрузку Meteor, но затем снова... она полностью игнорировала эту папку во время сборки, и загруженная папка не существовала бы в сборке (выбросить ошибку ENOENT во время чтения).
Итак, я понял, что лучше вставлять файлы в /private/files, а затем читать идет следующим образом:
result = fs.readdirSync('assets/app/files')
Все в частной папке будет перемещено в папку "Активы", где во время выполнения имеется доступная папка APP (вы не видите ее в структуре папок сборки).
Это помогает просто простому дампу result = fs.readdirSync('.')
, чтобы узнать, в какую папку вы входите и посмотрите структуру.
*** UPDATE *****
Локально размещение файлов в папке private
все еще вызывало восстановление/обновление метеоритов (возможно, не в производстве..), поэтому я нашел другое решение, использующее UploadServer, чтобы определить каталог загрузки:
https://github.com/tomitrescak/meteor-uploads
Ответ 3
Это уже не так. Для Meteor 0.8 папка "../client/app" является общедоступной. Таким образом, используйте fs.readdirSync('../client/app'), чтобы публиковать файлы и папки.
Источник: личный опыт и fooobar.com/questions/488190/...
Ответ 4
Для метеора 1.0.2 public есть /web.browser/app/
Проверено путем ввода. Meteor dir
Общий путь в linux/home/user/your_app_name/.meteor/local/build/programs/web.browser/app/
И для того, чтобы получить root, это `process.env.PWD или process.cwd().
Я не уверен, что его работа развернута.
_meteor_bootstrap_.serverDir +'/assets/app'
Это путь к частной папке.
Ответ 5
Это работает для меня в Meteor 1.0:
var fs = Npm.require('fs')
var xsd = fs.readFileSync(process.cwd().split('.meteor')[0] + 'server/company.xsd', 'utf8')
Ответ 6
Для Meteor 1.4 используйте серверные активы.
См. Официальные документы об активах
http://docs.meteor.com/api/assets.html
Ответ 7
На сервере вы можете использовать fs
для доступа к любой части дерева каталогов метеора, например, не к /public
import fs from 'fs';
const rd = process.env.PWD;
const obj = JSON.parse(fs.readFileSync('${rd}/private/file.json'));
будет читать и анализировать json файл, расположенный в private/file.json
вашего метеорного приложения.