我如何更改基于环境的Meanapp或Nodejs应用程序的基础Url?

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

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

我可以使用什么插件来改变Mean App中的baseurl?

现在请使用一些代码来build立一个插件来启动服务器:

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')); }); 

但我认为它可能不会产生所需的结果。

例如: – 现在我调用api http.get(baseurl +'user / 1'),其中baseurl =' http:// localhost:8000 '。 当应用程序部署到开发服务器,它应该重写开发string .. http://dev.mydomain.com而不是localhost:8000相同的方式为生产baseurl。 抱歉有疑惑。

我在这里先向您的帮助表示感谢 !!

如果通过“baseurl”,你的意思是域名。 。 。 你不能改变这一点。 它将在本地主机上,或者在您设置的任何服务器的域上。 除非你添加一个/etc/hosts指向本地/etc/hosts的条目到其他域。 如果你指的是path的一部分。 。 。 这就是expression的意思(“MEAN”中的“E”)。 只是:

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

如果你的意思不是这些事情之一,那么你需要澄清你的问题。 也许给一个期望的输出/效果的例子。

编辑:

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

编辑2:

根据你的意见,你不需要configuration这个。 大多数情况下,您只需要使用相对path,并让服务器将域部分映射出去。 例如,不要redirect到“my.specialdomain.com/foo”。 只需redirect到“/ foo”,Express /服务器/浏览器就可以完成剩下的工作。 与客户端链接相同 – 只需使用相对path:

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

与来自客户的请求一样。 他们理解相对path,所以你可以(大多数情况下)使用类似http.get('/foo/bar') (不知道你使用的是什么库,所以根据需要进行调整)。

如果由于某种原因,你需要包括域名 – 就像你想从httpredirect到https一样 – 你可以从主机头获得它。 有了express,只需使用req.hostname 。 这将给你的域名减去端口。 那么你可以有select地包含一个端口,如果有必要 如果您需要经常这样做,您可以考虑使用特殊的中间件function来设置它。 例如:

 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);