我正在尝试将我的Meteor应用程序部署到AWS Elastic Beanstalk。它们不支持JSON对象作为环境变量,所以需要有一个解决方法。我上传settings.json
文件/tmp/settings.json
和保存路径为process.env.METEOR_SETTINGS_FILE
然后在服务器文件我做到以下几点:启动后添加客户端的流星设置配置
if (Meteor.isProduction) {
var meteorFile = process.env.METEOR_SETTINGS_FILE;
if(meteorFile == undefined) throw new Error(
'METEOR_SETTINGS_FILE env variable must be defined in production.')
var fs = Npm.require('fs');
var pjsonBuf = fs.readFileSync(meteorFile);
Meteor.settings = JSON.parse(pjsonBuf.toString().trim());
Meteor.settings.public = Meteor.settings.public;
}
然而,在客户端上我仍然得到Uncaught TypeError: Cannot read property 'writeKey' of undefined
不确定的地方需要被Meteor.settings.public.segment
。我有一个空的对象Meteor.settings.public
,如果我在上面的文件中我console.log(Meteor.settings)
,他们都在那里。
使用下面的命令启动流星
流星--settings settings.json –
这是行不通的,因为你不行在生产服务器上运行'流星' – Mikkel