0

我创建了一些应用程序,它们遵循与Single-spa 示例页面上列出的react-microfrontend项目相同的模式。但是,这些示例没有使用 TypeScript。

当 App2 尝试导入 App1 中存在的函数时,我收到 TS 错误,因为 App2 无法找到 App1 对象的类型。这对我来说很有意义,因为在root-config 项目的文件中importmap.json引用的只有一个为每个微前端的 .js 文件列出的 URL。我真的不想到处添加@ts-ignore 语句,我也不想在没有类型安全的情况下进行跨应用程序通信。index.html

我所指的一个例子:

Planets 应用程序中的这个文件引用了 Styleguide 应用程序中的 Button 组件。除非我在导入语句之前的行上放置一个@ts-ignore,否则我无法构建它,因为我的 Planets 应用程序找不到 Styleguide 的类型声明。

一般来说,我对导入地图和 SystemJS 非常陌生,所以如果有人能指出我正确的方向,我将不胜感激。实际上,我已经经历了将我的 Styleguide 构建为常规 npm 库并将其作为依赖项包含在 Planets package.json 文件中的麻烦……这首先违背了使用 Single-spa 的全部目的.

导入地图.json

{
  "imports": {
    "@react-mf/planets": "//localhost:9000/react-mf-planets.js",
    "@react-mf/styleguide": "//localhost:9001/react-mf-styleguide.js"
  }
}

page.component.ts

// @ts-ignore
import { Button } from "@react-mf/styleguide";

...

render() {
  return (
    // Unable to view the available props
    <Button label="Hello World" />
  );
}
4

1 回答 1

1

不幸的是,它们不能通过导入映射共享,因为它在浏览器中运行,并且浏览器不理解 TypeScript 语法。

您的替代方案是:

更多信息可以在这个 Github 问题上找到:https ://github.com/single-spa/single-spa/issues/609#issuecomment-665132965

于 2020-10-30T17:45:28.640 回答