我们有一个使用Yarn’s ‘workspaces’ feature的monorepo,这意味着Yarn会尽可能地将依赖关系提升到monorepo的根node_modules
目录,而不是将它们保留在单个程序包的node_modules
目录中。这依赖于Node的模块解析算法,该算法继续在目录树的node_modules
目录中搜索模块,直到找到所需的模块为止。
在导入另一个包(monorepo的内部或外部)的文件中使用Flow类型时,在包含该文件的包内运行Flow会引发Cannot resolve <package-name>
错误。 Flow似乎使用了不同的模块解析算法,但由于已安装的模块被提升到根目录,并且Flow不会继续在目录树中搜索,因此失败。
除了从根目录运行Flow以外,还有其他方法吗?从根目录运行不是最佳选择,因为它不允许对monorepo中的不同软件包进行不同的设置。
节点版本: 10.8.0
flow-bin
版本: 0.78.0
答案 0 :(得分:0)
我也遇到了这个问题
要修复此问题,需要更新.flowconfig
:
[include]
../../node_modules/
FS结构:
/project_root
--/node_modules
--/packages
----/module1
------.flowconfig
答案 1 :(得分:0)
使用如下指令手动选择要提升的组件:
DataLakeFileClient fileClient = new DataLakeFileClient(new
Uri($"https://{accountName}.dfs.core.windows.net/{container}/{directory}/{filename}"), credential);
UnicodeEncoding uniEncoding = new UnicodeEncoding();
using (MemoryStream memStream = new MemoryStream(100))
{
byte[] colString = uniEncoding.GetBytes("a,b,c,d,e,f");
memStream.Write(colString, 0, colString.Length);
memStream.WriteByte(0x0A);
byte[] dataString = uniEncoding.GetBytes(string.Join(",", "val1","val2","val3","val4","val5","val6"));
memStream.Write(dataString, 0, dataString.Length);
memStream.Position = 0;
fileClient.Upload(memStream);
}
或使用排除 glob 选择它们:
"nohoist": ["**/npm-package", "**/npm-package/**"]
有关详细信息,请参阅 my answer to another question。