我正在尝试使用Angular2 CLI来帮助支架并创建我的角度2项目。这包括一个很好的测试套件,webpack等设置。
我还在Google App Engine上用Python开发了一个API。不幸的是,如果我只使用GAE来托管我的前端,我会失去webpack的一些优点(自动检测,重新加载,单元测试)。
我尝试使用代理配置将请求重定向到我的后端。
{
"/api" :{
"target": "http://localhost:8080",
"secure": false,
"loglevel": "debug"
},
"/_ah" :{
"target": "http://localhost:8080",
"secure": false,
"loglevel": "debug"
}
}
我使用ng serve --proxy-config proxy.config.json
引用代理配置。
这适用于我直接使用webapp2定义的请求。这些请求在/ api级别举行。
但是对于我在/ _ah后面定义的请求失败了,我使用端点库来定义。
ModuleDoesNotExistError('localhost:4200',)
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 1302, in communicate
req.respond()
File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 831, in respond
self.server.gateway(self).respond()
File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 2117, in respond
for chunk in response:
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/endpoints/endpoints_server.py", line 121, in __call__
yield self.dispatch(request, start_response)
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/endpoints/endpoints_server.py", line 151, in dispatch
return self.call_spi(request, start_response)
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/endpoints/endpoints_server.py", line 324, in call_spi
spi_request.source_ip)
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py", line 639, in add_request
headers_dict['Host'], urlparse.urlsplit(relative_url).path)
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py", line 713, in _resolve_target
raise request_info.ModuleDoesNotExistError(hostname)
ModuleDoesNotExistError: localhost:4200
我希望我可以使用GAE设置配置,以允许来自端口4200的请求。或者其他一些方式,我可以保留angular cli / webpack组合的值,同时使用GAE托管本地api
更新
我做了一些非常重要的工作,但我仍觉得我错过了一个配置文件。
我让它工作的黑客是更新app服务器py文件:
"/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py"
我将第685行更改为此硬编码选项if not hostname or hostname == default_address or hostname == 'localhost:4200':
现在,不再抛出错误,但是修复得很糟糕。任何帮助将不胜感激,所以我可以支持,并正确使用该工具。
答案 0 :(得分:4)
尝试在proxy.config中将changeOrigin设置为true。如:
"/_ah" : {
"target": "http://localhost:8080",
"secure": false,
"loglevel": "debug",
"changeOrigin": true
}