javascript - 如何编译两个相互引用的项目
问题描述
我在构建一个(@red5/middleware)
引用另一个项目的项目时遇到问题,(@red5/router)
作为回报,该项目引用了这个项目(@red5/middleware)
。
所以,当我运行命令时:
rm -rf types && tsc -p .
我收到一条错误消息,指出它找不到.d.ts
文件,因为我使用rm
.
../router/types/Route.d.ts:4:28 - 错误 TS7016:找不到模块“@red5/middleware”的声明文件。'C:/Users/rnaddy/Documents/vscode/projects/red5/framework/middleware/lib/index.js' 隐含了一个 'any' 类型。尝试
npm install @types/red5__middleware
它是否存在或添加一个新的声明 (.d.ts) 文件,其中包含declare module '@red5/middleware';
@red5/router -> route.ts
import { Middleware } from '@red5/middleware';
如果我删除该rm -rf types
命令,我会收到错误消息,指出它无法覆盖输入文件,但我不再收到上述错误消息。
我能做些什么来摆脱这个错误并仍然rm -rf types
在我的命令中使用?
中间件/tsconfig.json
{
"compilerOptions": {
"outDir": "lib",
"declarationDir": "types"
},
"extends": "../tsconfig.json",
"include": [
"src/**/*.ts"
]
}
tsconfig.json
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"moduleResolution": "node",
"declaration": true,
"strict": true,
"removeComments": false,
"inlineSourceMap": true
},
"exclude": [
"lib",
"types"
]
}
解决方案
这些项目是您正在建设的还是目前正在建设的?如果是这样,这听起来像是您正在使用的依赖模式的问题。
但是,无论如何 - 为了实现这一点,您需要一次更新一个模块。
使用旧模块的先前版本,您应该能够使用该最终输出作为新模块当前版本的依赖项。
然后,一旦您更新了这些项目 - 继续修改其他解决方案。
您必须先研究一个解决方案,然后再研究另一个 - 如果您在两者中都实施更改,您将破坏依赖关系并且无法编译其中任何一个。
推荐阅读
- icecast - Liquidsoap Icecast request.dynamic 错误
- python - Pandas 和 Matplotlib:无法在数据帧上使用 Matplotlib 来使用堆栈图
- javascript - react-html5video 是否与服务器端渲染兼容?(使用 next.js)
- excel - 将具有相同结构的多个 excel 文件中不同列和工作表的单元格值传输到单个数据框中
- python-2.7 - 以 10 为基数的 int() 的无效文字:'' 当提供空白输入时
- pdf - 以阿拉伯语作为文本输出 PDF
- php - Sylius 上的 Paypal REST 支付网关
- php - 检查数组中的 user_id
- docker - 在 RHEL 容器中安装“en_US”
- hadoop - hadoop v 2如何处理namenode的失败