9

我们有一个使用Yarn 的“工作区”功能的 monorepo ,这意味着只要有可能,Yarn 会将依赖项提升到 monorepo 的根node_modules目录,而不是将它们保存在单个包的node_modules目录中。这依赖于 Node 的模块解析算法,该算法继续在 dir 树的目录中搜索模块,node_modules直到找到所需的模块。

在导入另一个包(monorepo 内部或外部)的文件中使用 Flow 类型时,在包含该文件的包中运行 Flow 会导致引发Cannot resolve <package-name>错误。似乎 Flow 使用了不同的模块解析算法,并且由于安装的模块被提升到根目录并且 Flow 不会继续搜索目录树而失败。

除了从根目录运行 Flow 之外,还有其他方法吗?从根目录运行并不是最优的,因为它不允许在 monorepo 中对不同的包进行不同的设置。

节点版本: 10.8.0
flow-bin版本: 0.78.0

4

2 回答 2

4

我也遇到了这个问题

要修复它需要更新.flowconfig

[include]
../../node_modules/

FS 结构:

/project_root
--/node_modules
--/packages
----/module1
------.flowconfig
于 2019-07-13T07:46:16.357 回答
0

使用如下指令选择要手动吊起的组件:

"nohoist": ["**/npm-package", "**/npm-package/**"]

或使用排除 glob 选择它们:

"nohoist": [  
  "**/!(my-site|my-cms|someones-components)"
 ]

有关更多信息,请参阅我对另一个问题的回答

于 2021-01-20T15:32:27.410 回答