2016-02-27 1 views
0

Я следую учебник здесь: http://experimentsinmeteor.com/photo-blog-part-1/Ошибка: FS.Store.S3 необходимо указать «ведро» вариант (meteor.js и s3)

я могу получить мое приложение для запуска хорошо, когда я использую:

meteor --settings settings.json 

Но когда я просто использовать «meteor», чтобы начать свой локальный сервер, или при развертывании приложения на моем производстве (на Heroku), аварий приложений, и я получаю этот выход:

=> Started proxy.        
=> Started MongoDB.       
W20160227-10:30:11.721(-8)? (STDERR)   
W20160227-10:30:11.722(-8)? (STDERR) /Users/*************/.meteor/packages/meteor-tool/.1.1.10.1b51q9m++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:245 
W20160227-10:30:11.722(-8)? (STDERR)      throw(ex); 
W20160227-10:30:11.722(-8)? (STDERR)       ^
W20160227-10:30:11.722(-8)? (STDERR) Error: FS.Store.S3 you must specify the "bucket" option 
W20160227-10:30:11.723(-8)? (STDERR)  at new FS.Store.S3 (packages/cfs_s3/packages/cfs_s3.js:95:1) 
W20160227-10:30:11.723(-8)? (STDERR)  at lib/collections/images.js:2:20 
W20160227-10:30:11.723(-8)? (STDERR)  at /Users/**************/www/myapp/.meteor/local/build/programs/server/app/lib/collections/images.js:58:4 
W20160227-10:30:11.723(-8)? (STDERR)  at /Users/**************/www/myapp/.meteor/local/build/programs/server/boot.js:242:10 
W20160227-10:30:11.723(-8)? (STDERR)  at Array.forEach (native) 
W20160227-10:30:11.723(-8)? (STDERR)  at Function._.each._.forEach (/Users/***************/.meteor/packages/meteor-tool/.1.1.10.1b51q9m++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11) 
W20160227-10:30:11.723(-8)? (STDERR)  at /Users/*************/www/myapp/.meteor/local/build/programs/server/boot.js:137:5 
=> Exited with code: 8 

У меня есть thi s часть приложения структурированы подобно тому, как это делается в учебнике:

У меня есть .gitignore, который включает в себя только settings.json

У меня есть файл settings.json в корне:

{ 
    "AWSAccessKeyId" : "access key", 
    "AWSSecretAccessKey" : "secret", 
    "AWSBucket" : "bucket name" 
} 

Тогда у меня есть Библиотека/коллекция/файл images.js:

if (Meteor.isServer) { 
    var imageStore = new FS.Store.S3("images", { 
    /* OPTIONAL IN MOST CASES */ 
    region: "us-west-1", // substitute the region you selected 


    /* REQUIRED */ 
    accessKeyId: Meteor.settings.AWSAccessKeyId, 
    secretAccessKey: Meteor.settings.AWSSecretAccessKey, 
    bucket: Meteor.settings.AWSBucket 
    }); 

    Images = new FS.Collection("Images", { 
    stores: [imageStore], 
    filter: { 
     allow: { 
     contentTypes: ['image/*'] 
     } 
    } 
    }); 
} 

// On the client just create a generic FS Store as don't have 
// access (or want access) to S3 settings on client 
if (Meteor.isClient) { 
    var imageStore = new FS.Store.S3("images"); 
    Images = new FS.Collection("Images", { 
    stores: [imageStore], 
    filter: { 
     allow: { 
     contentTypes: ['image/*'] 
     }, 
     onInvalid: function(message) { 
     Bert.alert(message); 
     } 
    } 
    }); 
} 

// Allow rules 
Images.allow({ 
    insert: function() { return true; }, 
    update: function() { return true; } 
}); 

Я знаю, что это работает, потому что я могу хранить изображения, когда я бег:

meteor --settings settings.json 

Используется только исключительно «метеор» и в производстве, что эта ошибка появляется (проверяет журналы героя и показывает одно и то же).

ответ

0

Это ошибка, потому что вы должны указать местоположение настроек либо через командную строку, либо через переменную окружения. Там есть good blog post о настройках на The Meteor Chef. Существует также ссылка на то, как установить переменные окружения героя here. В основном вы используете heroku config:set и укажите свою переменную. Я считаю, что в этом случае это будет примерно так:

heroku config:set METEOR_SETTINGS \"$(cat settings.json)\" -p 'Project Name'

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