s4sdk - s4sdk - 无法连接到 NodeJS 微服务
问题描述
我正在使用 NodeJS 微服务扩展第 9 步中提到的教程。但是,我在与后端的通信方面遇到了一些奇怪的问题。
我的流程是一个指向 HTML5 微服务(静态构建包)的 App Router,它使用 Java 或 NodeJS 微服务。Java 部分与身份验证范围一起工作正常,但是对于 NodeJS,当我调用相应的路径 /node/hello 时,我总是收到 404(未找到)错误(hello 应该从服务器返回一个函数输出)。
这是我用于路由的 xs-app.json
{
"welcomeFile": "index.html",
"authenticationMethod": "route",
"websockets": {
"enabled": true
},
"routes": [
{
"source": "/odata/v4/(.*)",
"target": "/odata/v4/$1",
"destination": "business-partner-api"
},
{
"source": "/",
"target": "/",
"destination": "business-partner-frontend"
},
{
"source": "/node/(.*)",
"target": "/$1",
"destination": "business-partner-node"
}
]
}
问题出在 /node 块上,其他的工作正常。我还注意到另一个奇怪的问题,如果我将默认目标 (/) 从业务合作伙伴前端替换为业务合作伙伴节点,则应用程序路由器成功调用节点 js 服务器并传播身份验证,因此出现问题以某种方式与 xs-app 文件相关,而不是与目标本身相关。
我也尝试将端口添加到目的地并添加映射html5项目的静态文件但没有成功,但没有成功。
节点部分配置中可能缺少什么?
此致,
解决方案
问题可能在于您的路线顺序,这对路线很重要。当前路径的第一个匹配项source
将确定路由。在您的情况下,/
第二条路线的 匹配所有路径,包括/node/...
.
重新排序您的路线,以便节点目的地位于前端目的地之前。
推荐阅读
- php - 如何从视图 Yii 2 中的表单获取控制器中的属性值
- swiftui - 如何在 Apple Watch 的扩展委托中访问 SwiftUI 内容视图?
- c# - Unity 在播放时启用/禁用布尔值(编辑器)
- vb.net - 如何允许通过类名访问实例方法?
- scala - 在 Scala 中为案例类创建伴随对象时遇到问题
- android - 如何使`this`在一个范围内引用 Kotlin Android Extension 类型类?
- android - 我使用了 distributionUrl =https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 但同步后布局文件仍然丢失
- git - 将 git hub 存储库更改为主文件夹(iso 子文件夹)
- mysql - 语法不正确的 SQL 不会在 MariaDB 服务器版本中引发错误:10.1.45?
- javascript - [Vue 警告]:beforeCreate 钩子中的错误:“ReferenceError:文档未定义”