2014-10-05 7 views
1

У меня изначально было приложение с использованием private/settings.json. При попытке сделать пакет из этого приложения, я ставлю этот актив в packages/x:package/config/settings.json, и в package.js игровой .onUse не добавленЛокальный пакет с Meteor

api.addFiles('config/settings.json', 'server', { isAsset: true }); 

Я использовал его успешно в пакете, как

settings = JSON.parse(Assets.getText('config/settings.json')); 

до Я удалил private/settings.json. теперь я получаю

TypeError: Cannot read property 'token' of undefined 

Если бы я только сохранить private/settings.json, вместо удаления packages/x:package/config/settings.json (также меняется от config/ к private/ в package.js, пакет и т.д.) Я получаю

error: File not found: private/settings.json 

(Как) я могу есть активы, которые являются только локальными для пакета? В качестве альтернативы, как я могу включить/использовать глобальные активы в private/ в пакете?

ответ

4

Я думаю, что имеет смысл, что пакеты не смогут получить доступ к активам в каталоге private приложения. В противном случае пакет может случайно открыть личные настройки или активы вашего приложения.

Похоже, что вы хотите поделиться своим файлом settings.json между приложением и пакетом. Вы можете сделать это несколькими способами:

  1. Поместите настройки во второй пакет и используйте его в своем приложении и в своем первом пакете.
  2. Имейте метод, экспортируемый вашим пакетом setSettings, который позволяет приложению загружать свои настройки, а затем передавать их в ваш пакет.
  3. Используйте Meteor.settings и запустите приложение с meteor --settings private/settings.json вместо получения настроек из актива.
+0

Да, это имеет смысл и для меня. Это было все в пакете, но спасибо за супер-полезный совет! Upvoted. Проблема в моем случае была на самом деле просто неправильной установкой.json. – jiku

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