gil*_*ran 1 node.js gruntjs grunt-contrib-connect
我正在使用grunt连接livereload用于我的开发环境.
我希望能够调用/ server下的生产API.
要做到这一点,我需要指挥任何来电
http://localhost:9000/server
至
http://www.production-server.com/server
这对我有好处,因为有时我想在开发模式下对生产服务器进行测试.
这是我当前的连接配置(由Yeoman生成):
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost',
livereload: 35729
},
livereload: {
options: {
open: true,
middleware: function(connect, options, middlewares) {
return [
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
test: {
options: {
port: 9001,
middleware: function(connect) {
return [
connect.static('.tmp'),
connect.static('test'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
dist: {
options: {
open: true,
base: '<%= yeoman.dist %>'
}
}
},Run Code Online (Sandbox Code Playgroud)
我发现了问题和解决方案:
首先要做的是使用:grunt-connect-proxy grunt任务来做代理(你可以做任何事情).配置不明显,但您可以在这里找到所有信息(和示例):https://www.npmjs.org/package/grunt-connect-proxy
我的具体问题是因为我的服务器不接受任何来自同一域的调用,所以我所做的就是用我的域名将"headers"属性添加到配置中.这是新配置应该是这样的:
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost',
livereload: 35729
},
server: {
proxies: [
{
context: '/server',
host: 'production-server.com',
post: 80,
changeOrigin: true,
headers: {
host: 'simple-layout.com'
}
}
]
},
livereload: {
options: {
open: true,
middleware: function (connect) {
return [
proxySnippet,
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
test: {
options: {
port: 9001,
middleware: function (connect) {
return [
connect.static('.tmp'),
connect.static('test'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
dist: {
options: {
open: true,
base: '<%= yeoman.dist %>'
}
}
},
Run Code Online (Sandbox Code Playgroud)