yarn 工作区添加空文件夹而不是本地依赖项

问题描述 投票:0回答:1

设置

Windows 11
WSL 2 terminal

我的仓库

我的基本目录结构如下所示:

backend
  src
  package.json
frontend
  apps
    admin
      src
      package.json
    user-type-1
      src
      package.json
  core
    utils
    common
  package.json
package.json
yarn.lock

我的根 package.json 看起来像这样:

{
  "private": true,
  "name": "root",
  "workspaces": {
    "packages": [
      "backend",
      "frontend"
    ]
  },
  "engines": {
    "node": "^20.5.1"
  },
  "packageManager": "[email protected]",
  "scripts: { ... }
  "dependencies": {
    "typescript": "^5.1.6",
    ...
  }
  ...
}

我的后端 package.json 看起来像这样:

{
  "private": true,
  "name": "@project/backend",
  "version": "1.0.0",
  "scripts: { ... }
  ...
}

我的前端 package.json 看起来像这样:

{
    "name": "@project/frontend",
    "private": true,
    "version": "1.0.0",
    "workspaces": {
        "packages": [
            "apps/admin",
            "apps/user-type-1",
            "core"
        ]
    },
    "engines": {
        "node": "^20.5.1"
    },
    "packageManager": "[email protected]",
    "scripts: { ... },
    "dependencies": {
      "@project/backend": "1.0.0",
      ...
    }
    ...
}

后端有很多前端需要的东西,所以我想添加后端和前端的依赖。
我尝试运行以下命令:

yarn workspace @project/frontend add @project/[email protected]

预期行为

  • 在前端的node_modules中添加一个文件夹@project/backend
  • 我可以使用
    import
  • 访问后端类型等
  • 过程中没有抛出任何错误

实际行为

  • 在前端的节点模块内创建了一个名为@project的文件夹,但它是空的
  • 使用时无法访问后端类型
    import
  • 过程中没有抛出任何错误

从前端导入后端之前是有效的,所以我猜这不是纱线的问题,而是我所做的一些更改的问题。
然而,即使在返回

package.json
后,我也无法找出导致纱线失败的原因。

node.js import package.json yarn-workspaces
1个回答
0
投票

如果我能找到更多相关信息,我会更新答案,如果您有任何线索,请分享

问题似乎与yarn wsl 2适配有关。
我不确定 Ubuntu 上是否也会发生同样的情况,但显然,yarn 在 wsl 上运行时不会创建文件夹(不确定是否是故意的)。

一旦您在 wsl 上运行

yarn install
,即使在 powershell 上重新运行该命令,本地 node_module 文件夹也将保持为空,除非您删除yarn.lock 和 node_modules。

在 MacOS 上克隆并测试后,没有出现此类问题。

我猜删除yarn.lock并在powershell而不是wsl上重新运行

yarn install
可以算作解决方案,但这听起来不对......

© www.soinside.com 2019 - 2024. All rights reserved.