Чтение файлов из каталога внутри приложения 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 вашего метеорного приложения.