当meteor应用程序作为开发,测试或生产环境运行时,我需要使用不同的帐户提供程序配置。
答案 0 :(得分:56)
自Meteor 1.3以来,这些标志开箱即用:
Meteor.isDevelopment
Meteor.isProduction
Meteor.isTest
Meteor.isAppTest
答案 1 :(得分:32)
在服务器上:
var inDevelopment = function () {
return process.env.NODE_ENV === "development";
};
var inProduction = function () {
return process.env.NODE_ENV === "production";
};
当您运行meteor
时,Meteor将环境变量NODE_ENV设置为“development”。在生产中,您可以将变量设置为您想要的任何值,否则它将默认为“生产”。
更新:我创建了一个智能包,允许它在客户端和服务器上运行。
mrt add allow-env
只需在服务器文件中设置权限规则。
allowEnv({
NODE_ENV: 1
});
答案 2 :(得分:18)
您可以使用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”)仅在服务器上可用。
然后,您可以为不同的环境提供不同的配置文件。
答案 3 :(得分:4)
很简单。我在五个(是的,五个!)不同的环境中运行我的应用程序。我只是在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
,并增加了额外的功能。请参阅docs。
答案 4 :(得分:1)
在github上有一个开放的pull request可以允许这样做。评论/投票,因此更有可能被包括在内!
答案 5 :(得分:0)
实现此目的的一种非常混乱的方式
注意:界面没问题恕我直言,执行情况很乱