meteor应用程序如何知道它是否在开发,testing或生产环境中运行?
当meteor应用程序作为开发,testing或生产环境运行时,我需要使用不同的帐户提供者configuration。
自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时,meteor将环境variablesNODE_ENV设置为“开发”。 在生产中,您可以将variables设置为任何您想要的,否则将默认为“生产”。 
更新 :我创build了一个智能包,以允许它在客户端和服务器上工作。
 mrt add allow-env 
只需在服务器文件中设置权限规则。
 allowEnv({ NODE_ENV: 1 }); 
 您可以使用Meteor.settings和在运行meteor run或meteor deploy时使用的--settings选项。 
 例如,要在dev模式下运行,创build一个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”)仅在服务器上可用。
然后,您可以为不同的环境使用不同的configuration文件。
好简单。 我正在五个(是的,五个!)不同的环境中运行我的应用程序。 我简单地在ROOT_URL上使用switch语句,如下所示,用于四种不同的环境。 当然,如果你只有两个环境,你可以使用if-else。 在服务器上工作。 只需创build一个名为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类似,但增加了额外的function。 看文档 。 
github上有一个公开的pull请求 ,可以这样做。 评论/投票,所以更有可能被纳入!