我正在为客户端将一个大型(ish)monorepo转换为TypeScript,然而,我自己对TS很陌生,遇到了一个错误,我找不到明显的修复方法。TS6059: File '[path to repo root]/packages/config/globals.ts' is not under 'rootDir' '[path to repo root]/packages/components/src'. 'rootDir' is expected to contain all source files.
globals.ts
文件不应该存在于components
包中,它属于config
包,所以我真的不明白这个错误。
我在repo的根目录下有一个主tsconfig文件(https://github.com/serge-web/serge/blob/feature/333-game-admin-channel/tsconfig.json),然后每个包都有自己的tsconfig文件,它扩展了那个文件。components
包的tsconfig文件在这里:https://github.com/serge-web/serge/blob/feature/333-game-admin-channel/packages/components/tsconfig.json
我假设我扩展包中的tsconfig文件不正确,或者我错误地使用了references
,但我找不到正确的方法来做到这一点。
这里是一个链接到仓库,如果你需要看到的结构:https://github.com/serge-web/serge/tree/feature/333-game-admin-channel
5条答案
按热度按时间zed5wv101#
最后,修复方法是从根目录中的
tsconfig.json
文件(我保留为.
)以外的所有文件中删除对rootDir的任何引用。qvtsj1bj2#
唯一对我有用的是在
package.json
中显式地添加包含外部代码的包作为依赖项:在我的设置中,我没有使用Lerna,只是使用了带有TypeScript和JavaScript包的原始Yarn Workspaces。
pjngdqdw3#
我以前也有同样的问题。
references
是解决这个问题的正确方法。我的monorepo app文件结构是这样的:
而
packageA
使用了一些packageB
的组件。像这样配置
packageA
的tsconfig-build.json
:references
配置解决了我的问题。文档:https://www.typescriptlang.org/docs/handbook/project-references.html
8zzbczxx4#
我在typings目录中找到了.ts。将扩展名从filename.ts更改为filename.d.ts解决了这个问题。所有其他文件都以这种方式命名,这是旧代码,我不知道为什么有一个文件的扩展名是.ts而不是.d.ts
piztneat5#
在Angular 15和NX monorepo中,我注意到
ts-config.base.json
属性paths
影响了它们顺序的库的顺序。如果你有一个库,里面有其他库的依赖项,你需要把依赖项放在使用它们的库之上。