我确定我的标题需要一些调整,但问题是:
有没有办法让我使用在给定端口上运行的dev_appserver(web上8080,API 54381)来提供我的AppEngine / Google Endpoint(Python)项目,同时使用不同的服务器为我的AngularJS客户端提供服务(以及必要性不同的端口,也许是5000)?
背景:
我看到的选项:
答案 0 :(得分:0)
如果使用grunt-connect-proxy
,在端口5000上运行的Grunt服务器将能够在端口8080上将请求转发到App Engine服务器。
这样你就可以保持Grunt不错的实时重载功能。
This article解释了如何在Java / Maven上进行,但Grunt部分完全相同。
以下是我使用代理修改的Gruntfile.js
的摘录:
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost',
livereload: 35729
}, proxies: [
{
context: [
'/_ah',
'/admin'
],
host: 'localhost',
port: 8080,
https: false,
changeOrigin: false,
xforward: false
}
], livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= yeoman.app %>'
],
middleware: function (connect, options) {
if (!Array.isArray(options.base)) {
options.base = [options.base];
}
// Setup the proxy
var middlewares = [require('grunt-connect-proxy/lib/utils').proxyRequest];
// Serve static files.
options.base.forEach(function (base) {
middlewares.push(connect.static(base));
});
// Make directory browse-able.
var directory = options.directory || options.base[options.base.length - 1];
middlewares.push(connect.directory(directory));
return middlewares;
}
}
},
...
grunt.loadNpmTasks('grunt-connect-proxy');
...
grunt.registerTask('server', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'connect:dist:keepalive']);
}
grunt.task.run([
'clean:server',
'concurrent:server',
'autoprefixer',
'configureProxies:server',
'connect:livereload',
'watch'
]);
});