typescript - 如何将单个 spa 浏览器内实用程序模块导入 TypeScript 包裹项目
问题描述
我在下面有 3 个 TypeScript 项目:
- 根配置
- 包裹,让我们称之为
my-app
- 浏览器内的实用模块,让我们称之为
api
以上所有项目都是使用create-single-spa
命令生成的。
在api/src/lomse-api.ts
文件中,我正在导出fetchPeople
模块,如下所示:
export { fetchPeople } from "./PeopleApi.ts";
根据single-spa 文档,鉴于我orgName
的 islomse
和projectName
is api
,我应该能够将fetchPeople
模块导入my-app
(包裹应用程序),如下所示:
import { fetchPeople } from '@lomse/api'
由于my-app
project 是一个 TypeScript 项目,上面的语句肯定会抛出下面的错误:
Cannot find module '@lomse/api' or its corresponding type declarations.
有没有办法来解决这个问题?
解决方案
该错误是 TypeScript 错误,而不是 JavaScript 或 single-spa 错误。以下是您需要执行的操作的选项:
- 使用 Node.js 兼容的模块格式(UMD、Commonjs)将您的实用程序模块发布到注册表(类型是可选的,因为 TS 可以从源推断,尽管类型更好)。然后将其安装到彼此的微前端的 node_modules 中。由于它是 webpack 外部的,node_modules 中的版本将仅用于 typescript 编译,而不用于在浏览器中执行。但是,这可能需要第二次构建,并且可能由于互操作差异而产生问题。
- 您可以只发布模块类型,无论是作为单独的包还是与其他微前端的类型一起发布。
- 模拟实用程序模块的类型,如此处所述。
资源:
推荐阅读
- vue.js - 如何通过索引将数据放入 v-data-table 中?
- swift - SwiftUI 是否向后兼容 iOS 12.x 及更早版本?
- vue.js - 如何等待用户使用 v-model 输入 vue 输入
- asp-classic - 使用经典的 ASP,如何获取或截屏 html 页面的元标记?
- c# - enum.toString() vs Class const string
- selenium - 使用“期望”检查部分文本内容
- r - 如何 gsub 匹配字符串并同时删除不匹配的字符串?
- jmeter - 在 JMeter 属性文件中声明一个全局变量
- r - 我已经在我的 R 中安装了包“xlsx”,但是当尝试打开库“xlsx”时,它警告说包加载失败
- nswag - NSwag 中的自定义模式名称