Webpack 主机将请求重定向到 google 应用引擎后端
Webpack host redirecting requests to google app engine backend
我正在尝试使用 Angular2 CLI 来帮助构建和创建我的 angular 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。
更新
为了让它工作,我做了一些非常糟糕的事情,但我仍然觉得我缺少配置文件。
我的技巧是更新应用服务器 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':
现在,这不再引发错误,而是一个糟糕的修复。任何帮助将不胜感激,所以我可以支持它,并正确使用该工具。
尝试在 proxy.config 中将 changeOrigin 设置为 true。如:
"/_ah" : {
"target": "http://localhost:8080",
"secure": false,
"loglevel": "debug",
"changeOrigin": true
}
我正在尝试使用 Angular2 CLI 来帮助构建和创建我的 angular 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。
更新
为了让它工作,我做了一些非常糟糕的事情,但我仍然觉得我缺少配置文件。
我的技巧是更新应用服务器 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':
现在,这不再引发错误,而是一个糟糕的修复。任何帮助将不胜感激,所以我可以支持它,并正确使用该工具。
尝试在 proxy.config 中将 changeOrigin 设置为 true。如:
"/_ah" : {
"target": "http://localhost:8080",
"secure": false,
"loglevel": "debug",
"changeOrigin": true
}