2015-04-20 5 views
2

Мне нужно получить путь к файлу внутри частной папки. На моей локальной машине я смог получить его, используя путь "../../../../../", однако, когда я развернулся на метеоритный сервер, используя meteor deploy, он больше не работает. Кроме того, я попытался войти в текущий каталог с помощью process.cwd() и получил следующее, которое отличается от структуры меня на моей локальной машине:Получение пути частной папки Meteor в среде Meteor Deploy

/meteor/containers/3906c248-566e-61b7-4637-6fb724a33c16/bundle/programs/server 

каталог вошли в моей локальной машине дает:

/Users/machineName/Documents/projectName/.meteor/local/build/programs/server 

Примечание: Я использую этот путь для настройки https://www.npmjs.com/package/apn

ответ

11

Вы можете использовать assets/app/ как относительный путь. Хотя это может не иметь смысла при первом взгляде, Meteor перенастраивает ваш каталог /private, чтобы карта была assets/app из каталога /programs/server. Это как в разработке, так и в производстве.

Предположим, что private/ соответствует assets/app/.

+0

Спасибо за ответ! Где я могу найти информацию об этом? Пытался заглянуть в документацию и не смог ее найти. – harinsa

+3

@doog Нет никаких документов на этом, я боюсь. Если вы будете следовать своему пути '.meteor/local/build/programs/server', это, возможно, будет более ясным. Этот каталог действительно находится где-то от – Akshat

+0

Вы бог Lol, Спасибо! –

1

Вызовите Assets.absoluteFilePath (propertyPath) для одного из активов в частной папке, затем нарежьте имя файла актива из возвращаемой строки, например, предположив, что у вас есть файл test.txt в личная папка:

var aFile = 'test.txt';// test.txt is in private folder 
var aFilePath = Assets.absoluteFilePath(aFile); 
var aFolder = aFilePath.substr(0, aFilePath.length - aFile.length); 
console.log(aFolder); 

https://docs.meteor.com/api/assets.html#Assets-absoluteFilePath

Смежные вопросы