“ENOENT:在带有纱线工作空间的 monorepo 中没有这样的文件或目录

Jea*_*eri 5 node.js lerna yarnpkg angular yarn-workspaces

我有两个独立的存储库(不在单一存储库中),它们像魅力一样工作(构建和测试)。然而,一旦我将它们放入带有纱线工作区的单一存储库中,它就不再起作用了。

让我解释一下:我有一个角度和一个节点/打字稿存储库。在 Monorepo 中,当我运行时yarn test,我的节点/打字稿项目中的测试仍然有效,但角度测试导致架构验证失败,并出现以下错误:

在此输入图像描述

因此,正如我们所知,yarn workspaces所有 node_modules 都被提升到根目录,所以我决定关闭提升

...
"workspaces": {
    "packages": [
        "packages/*"
    ],
    "nohoist": [
        "**/ui",
        "**/ui/**",
        "**/core",
        "**/core/**"
    ]
},
...
Run Code Online (Sandbox Code Playgroud)

我删除了所有node_modules并尝试再次运行yarn。但是,这次软件包的安装已经失败,并显示以下消息:

error An unexpected error occurred: "ENOENT: no such file or directory, lstat....rimraf
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我发现这个未解决的问题可能是相同的,但没有提供解决方法。因此,如果有人知道解决此问题的方法,我真的很想知道?!干杯

有关更多详细信息,您可以在此处查看存储库

Igo*_*kov 1

我参加聚会有点晚了,但我遇到了一个非常类似的问题,所以,这里有一个可能的解决方案,以防万一它对任何人都有帮助。

TL;DR - 构建你的包并重试

就我而言,问题是我无法安装任何新的依赖项,yarn因为ENOENT. 事实证明,我需要首先构建我的软件包,因为否则yarn会发现连接我的软件包的符号链接已损坏并且将无法继续安装。

有趣的是,我试图添加新依赖项的项目并不依赖于 monorepo 中的任何其他包,但这并不重要,而且yarn还是失败了。