标签: single-spa-angular

找不到模块“@angular-builders/custom-webpack/package.json”

我正在关注有关 Angular 的 single-spa 的文档。我的 Angular 版本是 11+。我按照https://single-spa.js.org/docs/ecosystem-angular/#angular-clihttps://single-spa.js.org/docs/ecosystem-angular/#finish-installation的步骤进行操作 成功地。但作为后续步骤,当我完成https://single-spa.js.org/docs/ecosystem-angular/#configure-routes并在https://single-spa.js.org/docs/ecosystem- 运行脚本时实际上,我收到以下错误: 找不到模块@angular-builders/custom-webpack/.. 谁能指出为什么会发生这种情况以及对此有什么补救措施?这是相关的日志文件 在此输入图像描述

single-spa-angular

15
推荐指数
2
解决办法
2万
查看次数

如何从 styles.scss 中的单 Spa 微前端资源加载资源?

我最近开始将一些 Angular 项目迁移到 single-spa,并且遇到了这个问题。

在子项目(微前端、Angular 12)中,请求的资产styles.scss只会从根/主机 url 中请求,而组件的 scss 文件中请求的资产将正确地在微前端的 url 中查找它们。我尝试使用,--deploy-url的选项提供了正确的基本网址。当以“single-spa 模式”启动时,子项目由构建器提供服务。和属性不起作用,并且会在构建/服务时抛出错误,因为它已在以前的 Angular 版本中被删除。ng serveAPP_BASE_HREF@angular-builders/custom-webpack:dev-server"baseHref""deployUrl"angular.json>architect.build.options"rebaseRootRelativeCssUrls"

根据资产调用位置生成的网络请求的示例图像

文件中的路径是相对的.scss,如下所示:

styles.scss
.sample {
  background-image: url('./assets/img/SAMPLE.png');
}
Run Code Online (Sandbox Code Playgroud)
app.component.scss
.sample-two {
  background-image: url('../assets/img/SAMPLE.png');
}
Run Code Online (Sandbox Code Playgroud)

将资产复制到根项目并使用绝对 URL 不是一种选择。由于子项目需要独立并能够由开发人员独立加载,因此它们应该保留自己的资产,并且如果存在替代方案,则不应将它们复制到两个项目。

assets webpack angular single-spa-angular

7
推荐指数
0
解决办法
1995
查看次数

Angular 作为 Webpack 外部

我目前正在尝试通过 Webpack 外部对象外部化 Angular 依赖项来缩短构建时间。到目前为止,我已经为 React 和其他小库实现了这一目标。

如果我只是移动 '@angular/compiler' 它也可以工作,但是当外部化 '@angular/core' 和其他人时,我Can't resolve all parameters for ApplicationModule: (?) at at syntaxError (util.ts:100) at CompileMetadataResolver._getDependenciesMetadata (metadata_resolver.ts:957) ...在引导应用程序时收到错误。

我使用的文件是您可以在 unpkg.com 中找到的 8.2.14 UMD 包,我的外部文件是:

[
    /^@example\, 
    /^rxjs$/, 
    /^rxjs\/operators$/, 
    /^@angular\/core$/, 
    /^@angular\/compiler$/, 
    /^@angular\/common$/, 
    /^@angular\/common\/http$/, 
    /^@angular\/forms$/, 
    /^@angular\/platform-browser$/, 
    /^@angular\/platform-browser-dynamic$/, 
    /^@angular\/router$/, 
    /^zone\.js$/,
    /^single-spa$/
]
Run Code Online (Sandbox Code Playgroud)

rxjs 包是在https://cdn.jsdelivr.net/npm/@esm-bundle 中找到的包。

您可以在此 repo 上看到错误:https : //github.com/OriolInvernonLlaneza/test-share-angular

提前致谢!

编辑:多亏了 yurzui 的回答,这个错误得到了解决。但是,我现在收到另一个错误:

Class constructor I cannot be invoked without 'new'
    at new EventEmitter (event_emitter.ts:78)
    at new NgZone (ng_zone.ts:97) …
Run Code Online (Sandbox Code Playgroud)

webpack webpack-externals angular micro-frontend single-spa-angular

5
推荐指数
1
解决办法
1675
查看次数

有什么方法可以显示加载程序,直到微型应用程序加载到单个 spa 项目中

我正在为我当前的项目使用单个 spa 并希望有一个加载程序,直到我的微应用程序被加载并且这些微应用程序之间会有一个切换,在这种情况下我也想显示一个加载程序。有没有办法达到同样的目标?

javascript micro-frontend single-spa-angular single-spa

1
推荐指数
1
解决办法
766
查看次数

如何使用 RxJs 在 single-spa 中共享 UI 状态?

根据 single-spa 官方文档,我们可以使用 RxJs 共享应用程序的 UI 状态。

Observables / Subjects (RxJs) - 一个微前端向一个流发出新值,该流可以被任何其他微前端使用。它从其浏览器模块中将 observable 导出到所有微前端,以便其他人可以导入它。

链接:https : //single-spa.js.org/docs/recommended-setup/#ui-state

链接:https : //single-spa.js.org/docs/faq/#how-can-i-share-application-state-between-applications

我试图在 React 中创建一个示例,其中我使用 single-spa 包裹将我的微应用程序包含在根应用程序中。我试图使用 RxJs 共享 UI 状态。当我在 google 上搜索 single-spa RxJs 时,我什么也没找到。谁能为我提供一个基本示例,我将能够为以下用例共享 UI 状态:

  • 将 UI 状态从根应用程序共享到我的微应用程序。
  • 将 UI 状态从微应用共享到根应用。
  • 在微应用之间共享 UI 状态。

micro-frontend single-spa-angular single-spa

1
推荐指数
1
解决办法
3121
查看次数