使用部署到 Heroku 的微前端的 JHipster 7.9.3 应用程序是否有效?

问题描述 投票:0回答:1

在 Heroku 上部署 JHipster 7.9.3 生成的微服务应用程序后收到以下消息。我的应用程序有 2 个微服务(tajvoteservice 和 siennaservice),这两个微服务都是我们的微前端。当我在我的笔记本电脑上本地部署我的应用程序时,它工作正常;然而,在 Heroku 上,我在网关上收到以下错误消息:

2023-03-25T16:35:53.163730+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/services/siennaservice/remoteEntry.js" host=www.saathratri.com request_id=7e56ca8a-620e-45b9-bb9d-a2241aa2143c fwd="50.172.26.133" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 protocol=https
2023-03-25T16:35:53.095621+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/services/tajvoteservice/remoteEntry.js" host=www.saathratri.com request_id=d4f9e086-fe6e-465a-9855-7bb8f9c78d2d fwd="50.172.26.133" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 protocol=https
2023-03-25T16:36:23.127957+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/services/tajvoteservice/remoteEntry.js" host=www.saathratri.com request_id=0d5053bf-4cf9-412b-b59b-e67ff17e3bf5 fwd="50.172.26.133" dyno=web.1 connect=0ms service=30001ms status=503 bytes=0 protocol=https

我尝试检查网关的 webpack.microfrontend.js 中的 remotes 参数:

...
module.exports = (config, options, targetOptions) => {
  return {
    plugins: [
      new ModuleFederationPlugin({
        remotes: {
          tajvoteservice: 'tajvoteservice@/services/tajvoteservice/remoteEntry.js',
          siennaservice: 'siennaservice@/services/siennaservice/remoteEntry.js',
        },
...

我改成如下:

...
module.exports = (config, options, targetOptions) => {
  return {
    plugins: [
      new ModuleFederationPlugin({
        remotes: {
          tajvoteservice: 'tajvoteservice@https://www.saathratri.com/services/tajvoteservice/remoteEntry.js',
          siennaservice: 'siennaservice@https://www.saathratri.com/services/siennaservice/remoteEntry.js',
        },
...

但是出现同样的错误。

我在浏览器控制台中收到以下错误:

main.1cba1d1f42986c71.js:1 Initialization of sharing external failed: ScriptExternalLoadError: Loading script failed.
(error: https://www.saathratri.com/services/siennaservice/remoteEntry.js)

我认为这与 Webpack 和 Module Federation(也不是微前端)无关。我已将部署(在 JDL 中)更改为常规微服务,但仍然收到 503(服务不可用)错误。在我看来,这与 Auth0 有关。但不确定出了什么问题。我按照 https://www.jhipster.tech/security/#oauth2 中的说明进行操作,但没有运气。

heroku jhipster auth0
1个回答
0
投票

问题是我的微服务中的 Eureka 服务配置(网关没问题)。我的微服务中的 Eureka 的 application-prod.yml 中必须包含以下内容:

...
eureka:
  instance:
    hostname: tajvote-service.herokuapp.com
    non-secure-port: 80
    prefer-ip-address: false
  client:
    service-url:
      defaultZone: ${JHIPSTER_REGISTRY_URL}/eureka/
...

主机名条目很重要。

微服务没有被调用,网关一直返回Service Unavailable(503),因为Eureka配置错误; sienna-service 和 tajvote-service 微服务没有正确地向服务发现 Eureka 注册自己,因此 Eureka 不知道如何将请求转发到各自的微服务。一旦添加了 Eureka 配置中的主机名条目,事情就开始工作了,503 服务不可用错误消失了。

最终这个问题与Auth0和微前端无关。此外,是的,使用部署在 Heroku 上的微前端的 JHipster 7.9.3 应用程序确实有效(只要您对拼图的服务发现部分进行了排序)!

© www.soinside.com 2019 - 2024. All rights reserved.