带有Html5 App Repo和Approuter的Cloud Foundry上的MTA

2020-08-15 17:44发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,SAP!

我正在尝试使用 nodejs html5模块在云铸造厂上构建全栈应用。 我首先创建了一个没有html5应用程序回购的 MTA ,并且效果很好(特别是路由,这个问题将要解决的问题)。 然后,我创建了一个带有html5应用程序仓库的 MTA (在创建html5模块时选中了该复选框)以利用它,现在路由到我的nodejs-backend-module不再起作用。 总是存在内部服务器错误。

我已经在sap帮助站点上阅读到,当使用html5 app repo和approuter时,不支持属性" destination"(我在没有html5 app repo的mta中具有将请求转发到模块的属性)。 那么我该如何将请求转发到后端模块?

以下显示了具有到html5应用程序仓库的路由的approuter。 当我添加带有目的地的第二条路线时,它不再起作用。

 {
 " welcomeFile":"/index.html",
 " authenticationMethod":"路由",
 "登出": {
 " logoutEndpoint":"/img/do/logout"
 },
 "路线":[{
 " source":" ^/(。*)$",
 " target":" $ 1",
 " service":" html5-apps-repo-rt",
 " authenticationType":" xsuaa"

         },{//无效的部分
 " source":" ^/api/([[a-z] +)",
 " target":"/img/$ 1",
 "目标":" nodejs_repo_api"
 }
 ]
 }
 

这是mta.yaml文件:

 ID:mta_test_modules_repo
 _schema-version:" 2.1"
 参数:
   deploy_mode:html5-repo
 版本:0.0.1
 模块:
   -名称:mta_test_modules_repo_appRouter
     类型:approuter.nodejs
     路径:mta_test_modules_repo_appRouter
     参数:
       磁盘配额:256M
       记忆体:256M
     要求:
       -名称:mta_test_modules_repo_html5_repo_runtime
       -名称:uaa_mta_test_modules_repo

   -名称:mta_test_modules_repo_ui_deployer
     类型:com.sap.html5.application-content
     路径:mta_test_modules_repo_ui_deployer
     要求:
       -名称:mta_test_modules_repo_html5_repo_host
     构建参数:
       要求:
         -名称:destination_service_frontend
           工件:
             -'./*'
           目标路径:resources/destination_service_frontend

   -名称:nodejs_repo
     类型:nodejs
     路径:nodejs_repo
     提供:
       -名称:nodejs_repo_api
         特性:
           网址:" $ {default-url}"
     
   -名称:destination_service_frontend
     类型:html5
     路径:destination_service_frontend
     参数:
       磁盘配额:500M
       内存:500M
     构建参数:
       制造商:咕unt声
     要求:
       -名称:nodejs_repo_api
         组:目的地
         特性:
           名称:nodejs_repo_api
           网址:"〜{url}"
           forwardAuthToken:true
       -名称:uaa_mta_test_modules_repo
 
 资源:
   -名称:mta_test_modules_repo_html5_repo_runtime
     参数:
       服务计划:应用程序运行时
       服务:html5-apps-repo
     类型:org.cloudfoundry.managed-service

   -名称:mta_test_modules_repo_html5_repo_host
     参数:
       服务计划:应用托管
       服务:html5-apps-repo
     类型:org.cloudfoundry.managed-service

   -名称:uaa_mta_test_modules_repo
     参数:
       路径:./xs-security.json
       服务计划:应用
       服务:xsuaa
     类型:org.cloudfoundry.managed-service

   -名称:dest_mta_test_modules_repo
     参数:
       服务计划:精简版
       服务:目的地
     类型:org.cloudfoundry.managed-service
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,SAP!

我正在尝试使用 nodejs html5模块在云铸造厂上构建全栈应用。 我首先创建了一个没有html5应用程序回购的 MTA ,并且效果很好(特别是路由,这个问题将要解决的问题)。 然后,我创建了一个带有html5应用程序仓库的 MTA (在创建html5模块时选中了该复选框)以利用它,现在路由到我的nodejs-backend-module不再起作用。 总是存在内部服务器错误。

我已经在sap帮助站点上阅读到,当使用html5 app repo和approuter时,不支持属性" destination"(我在没有html5 app repo的mta中具有将请求转发到模块的属性)。 那么我该如何将请求转发到后端模块?

以下显示了具有到html5应用程序仓库的路由的approuter。 当我添加带有目的地的第二条路线时,它不再起作用。

 {
 " welcomeFile":"/index.html",
 " authenticationMethod":"路由",
 "登出": {
 " logoutEndpoint":"/img/do/logout"
 },
 "路线":[{
 " source":" ^/(。*)$",
 " target":" $ 1",
 " service":" html5-apps-repo-rt",
 " authenticationType":" xsuaa"

         },{//无效的部分
 " source":" ^/api/([[a-z] +)",
 " target":"/img/$ 1",
 "目标":" nodejs_repo_api"
 }
 ]
 }
 

这是mta.yaml文件:

 ID:mta_test_modules_repo
 _schema-version:" 2.1"
 参数:
   deploy_mode:html5-repo
 版本:0.0.1
 模块:
   -名称:mta_test_modules_repo_appRouter
     类型:approuter.nodejs
     路径:mta_test_modules_repo_appRouter
     参数:
       磁盘配额:256M
       记忆体:256M
     要求:
       -名称:mta_test_modules_repo_html5_repo_runtime
       -名称:uaa_mta_test_modules_repo

   -名称:mta_test_modules_repo_ui_deployer
     类型:com.sap.html5.application-content
     路径:mta_test_modules_repo_ui_deployer
     要求:
       -名称:mta_test_modules_repo_html5_repo_host
     构建参数:
       要求:
         -名称:destination_service_frontend
           工件:
             -'./*'
           目标路径:resources/destination_service_frontend

   -名称:nodejs_repo
     类型:nodejs
     路径:nodejs_repo
     提供:
       -名称:nodejs_repo_api
         特性:
           网址:" $ {default-url}"
     
   -名称:destination_service_frontend
     类型:html5
     路径:destination_service_frontend
     参数:
       磁盘配额:500M
       内存:500M
     构建参数:
       制造商:咕unt声
     要求:
       -名称:nodejs_repo_api
         组:目的地
         特性:
           名称:nodejs_repo_api
           网址:"〜{url}"
           forwardAuthToken:true
       -名称:uaa_mta_test_modules_repo
 
 资源:
   -名称:mta_test_modules_repo_html5_repo_runtime
     参数:
       服务计划:应用程序运行时
       服务:html5-apps-repo
     类型:org.cloudfoundry.managed-service

   -名称:mta_test_modules_repo_html5_repo_host
     参数:
       服务计划:应用托管
       服务:html5-apps-repo
     类型:org.cloudfoundry.managed-service

   -名称:uaa_mta_test_modules_repo
     参数:
       路径:./xs-security.json
       服务计划:应用
       服务:xsuaa
     类型:org.cloudfoundry.managed-service

   -名称:dest_mta_test_modules_repo
     参数:
       服务计划:精简版
       服务:目的地
     类型:org.cloudfoundry.managed-service
 
付费偷看设置
发送
11条回答
Haoba3210
1楼-- · 2020-08-15 17:52

approuter模块是应该访问后端的模块(来自nodejs_repo模块),因此您需要在那里。

换句话说,移动:

需要:-名称:nodejs_repo_api
         组:目的地
         属性:名称:nodejs_repo_api
           网址:'〜{url}'
           forwardAuthToken:true
 

从destination_service_frontend模块到mta_test_modules_repo_appRouter模块,进行构建和部署。 有了这个approuter,应该可以找到目标nodejs_repo_api

Climb_Ma
2楼-- · 2020-08-15 17:52

类似的问题,此解决方案就可以了! 谢谢

闻人可可
3楼-- · 2020-08-15 17:47

嗨,佩吉,

您是否尝试过将api路由放在首位? 据我所知,在每种情况下,都会匹配并触发第一条路线。 这就是修改了" routes"后xs-app.json的样子:

 {
 " welcomeFile":"/index.html",
 " authenticationMethod":"路由",
 "登出": {
 " logoutEndpoint":"/img/do/logout"
 },
 " routes":[{//无效的部分
 " source":" ^/api/([[a-z] +)",
 " target":"/img/$ 1",
 "目标":" nodejs_repo_api"
 },{
 " source":" ^/(。*)$",
 " target":" $ 1",
 " service":" html5-apps-repo-rt",
 " authenticationType":" xsuaa"

         }
 ]
 } 

让我们知道这是怎么回事。

Doze时光
5楼-- · 2020-08-15 17:55

嗨,奥拉,

要解决此问题,请执行以下操作:

a)按照 Sergio Rozenszajn.html的定义,将目标移动到AppRouter模块。

b)更改路线中的目标字段:

代替" target":"/img/$ 1"

 将其更改为" target":" api/$ 1" 

此致

Puneet

DafaDDDa
6楼-- · 2020-08-15 18:02

嗨, Puneet Jain

感谢您的回答。 不幸的是,这对我也不起作用。 仍然找不到。 您确定这一定是解决问题的原因吗? 你有这个案子吗?

最诚挚的问候!

一周热门 更多>