当流星应用程序作为开发、测试或生产环境运行时,我需要使用不同的帐户提供者的配置。
6 回答
从 Meteor 1.3 开始,这些标志开箱即用:
Meteor.isDevelopment
Meteor.isProduction
Meteor.isTest
Meteor.isAppTest
在服务器上:
var inDevelopment = function () {
return process.env.NODE_ENV === "development";
};
var inProduction = function () {
return process.env.NODE_ENV === "production";
};
Meteor 在运行时将环境变量 NODE_ENV 设置为“开发” meteor
。在生产中,您可以将变量设置为您想要的任何值,否则它将默认为“生产”。
更新:我创建了一个智能包以允许它在客户端和服务器上工作。
mrt add allow-env
只需在服务器文件中设置权限规则。
allowEnv({
NODE_ENV: 1
});
您可以使用Meteor.settings
与--settings
运行时使用的选项meteor run
或meteor deploy
.
例如,要在dev
模式下运行,请创建一个 JSON 文件,将其命名为 meteorConfigDev.json,并将以下内容放入其中:
{
"public" : {
"mode" : "dev"
},
"anotherProperty" : "anotherValue"
}
使用运行您的应用程序
meteor --settings meteorConfigDev.json
在服务器和客户端上,您可以使用以下方式访问“模式”:
Meteor.settings.public.mode //in this case it will be "dev"
请注意,“public”中的设置在服务器和客户端上都可用,而其他所有设置(在本例中为“anotherProperty”)仅在服务器上可用。
然后,您可以为不同的环境使用不同的配置文件。
很容易。我在五个(是的,五个!)不同的环境中运行我的应用程序。我只是在 ROOT_URL 上使用 switch 语句,如下所示,用于四种不同的环境。当然,如果你只有两个环境,你可以使用 if-else。在服务器上工作。只需创建一个名为 startup.js 的新文件并使用下面的代码示例。干杯!
switch (process.env.ROOT_URL) {
case "http://www.production.com/":
BLOCK OF CODE HERE
break;
case "http://www.staging.com/":
BLOCK OF CODE HERE
break;
case "http://www.development.com/":
BLOCK OF CODE HERE
break;
case "http://localhost:3000/":
BLOCK OF CODE HERE
break;
}
一般来说,javascript中switch语句的格式是
switch(expression) {
case n:
code block
break;
case n:
code block
break;
default:
default code block
}
更新:请注意,Meteor 现在提供Meteor.absoluteUrl()
,这类似于process.env.ROOT_URL
添加了额外的功能。请参阅文档。
github 上有一个开放的pull request允许这样做。评论/投票,所以它更有可能被收录!