如何根据环境更改Meanapp或Nodejs应用程序中的基本URL?

时间:2015-02-21 13:51:24

标签: node.js base-url

例如: -
我使用API​​在本地运行应用程序(返回json)

http://localhost:8000/userslist - (返回json)

我可以使用哪个插件来更改Mean App中的baseurl?

请使用一些代码启动服务器,现在为iam建议一个插件: -

 app.set('port',process.env.PORT||8000)
//console.log('Your app running on Environment :-',process.env.PORT);

var server=http.createServer(app).listen(app.get('port'),function(){
    console.log('express server listening on port'+app.get('port'));
});

但我认为它可能无法产生所需的结果。

示例: - 现在iam调用api http.get(baseurl +'user / 1'),其中baseurl ='http://localhost:8000'。  当应用程序部署到开发服务器时,它应该使用 dev string .. http://dev.mydomain.com而不是localhost:8000以相同的方式重写baseurl。抱歉有问题。

感谢提前帮助!!

1 个答案:

答案 0 :(得分:2)

如果是“baseurl”,则表示域名。 。 。你真的无法改变它。它将位于localhost或您设置的任何服务器的域上。除非您向/etc/hosts添加一个条目,指向localhost到其他域。如果你的意思是路径的一部分。 。 。这就是表达的内容(“均”中的“E”)。只是:

var express = require('express');
var app = express();
app.get('/userlist', function() { // get users from Mongo });

如果您的意思是其他而不是其中之一,那么您需要澄清您的问题。也许举一个期望的输出/效果的例子。

编辑:

哦,你想根据环境指向不同的端口吗?

编辑2:

根据您的评论,您不需要为此进行配置。大多数情况下,您只需要使用相对路径并让服务器将域部分计算出来。例如,不要重定向到“my.specialdomain.com/foo”。只需重定向到“/ foo”和Express /服务器/浏览器将完成剩下的工作。与客户端链接相同 - 只需使用相对路径:

<a href="/foo/bar">Blah</a>

与客户端的请求相同。他们了解相对路径,因此您可以(大部分时间)使用类似http.get('/foo/bar')的内容(不确定您使用的是哪个库,因此请根据需要进行调整)。

如果出于某种原因,您需要来包含域 - 例如,如果您想从http重定向到https - 您可以从Host标头获取它。使用express,只需使用req.hostname即可。这将为您提供减去端口的域名。然后,如有必要,您可以选择性地包含端口。如果您需要经常这样做,您可能会考虑使用特殊的中间件功能来设置它。例如:

app.use(function(req, res, next) {
  // Or maybe a switch on process.env.NODE_ENV if you have more than 2 environments
  req.hostWithPort = req.hostname + (process.env.NODE_ENV === 'production' ? '' : ':' + app.get('port'));
  next();
});

然后在任何需要的地方使用它,例如:

res.redirect(301, 'https://' + req.hostWithPort);