You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

turbo prune命令在Windows(WSL2)及Mac M1/M2环境下失效问题

Turborepo Monorepo跨平台构建异常(WSL2/Mac M1/M2)

基于Turborepo官方文档搭建的monorepo项目,在Linux机器上可正常完成全量构建及Docker容器部署,但在Windows(Win10/11的WSL2)或Mac M1/M2环境下构建完全失败。

核心问题集中在turbo prune命令:该命令本应在容器根目录生成指定包的构建产物(包含各类.json文件、yarn.lock等),用于后续复制到目标目录,但实际执行全程失败。当前使用yarn v1,测试过turbo v1.1.2(Linux环境正常运行)及最新版本,均无法解决问题。

尝试过将子包当作独立根项目,手动补充各类文件修复,但均失败,具体步骤及对应报错如下:

尝试的修复步骤及报错

1. 直接沿用Linux正常构建流程

=> ERROR [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker                                0.6s
------
 > [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker:
#9 0.620  ERROR  could not construct graph: Could not find turbo.json. Follow directions at https://turborepo.org/docs/getting-started to create one
------
executor failed running [/bin/sh -c turbo prune --scope=${SCOPE} --docker]: exit code: 1

2. 手动将monorepo根目录的turbo.json复制到子包后

=> ERROR [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker                                0.7s
------
 > [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker:
#9 0.459 2022/07/19 15:35:08 [WARNING] Did not find "packageManager" in your package.json. Please run "npx @turbo/codemod add-package-manager"
#9 0.600 2022/07/19 15:35:09 [WARNING] Did not find "packageManager" in your package.json. Please set the "packageManager" field to your package.json
#9 0.714 2022/07/19 15:35:09 [WARNING] Did not find "packageManager" in your package.json. Please run "npx @turbo/codemod add-package-manager"
#9 0.714 2022/07/19 15:35:09 [WARNING] Did not find "packageManager" in your package.json. Please run "npx @turbo/codemod add-package-manager"
#9 0.714  ERROR  could not construct graph: could not determine package manager. Please set the "packageManager" property in your root package.json (https://nodejs.org/api/packages.html#packagemanager) or run `npx @turbo/codemod add-package-manager` in the root of your monorepo.
------
executor failed running [/bin/sh -c turbo prune --scope=${SCOPE} --docker]: exit code: 1

3. 在子包package.json中添加packageManager字段后

=> ERROR [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker                                0.6s
------
 > [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker:
#9 0.584  ERROR  could not construct graph: yarn.lock: failed to hash lockfile: open yarn.lock: no such file or directory
------
executor failed running [/bin/sh -c turbo prune --scope=${SCOPE} --docker]: exit code: 1

4. 将monorepo根目录的yarn.lock复制到子包后

=> ERROR [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker                                0.8s
------                                                                                                       
 > [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker:                                           
#9 0.676  ERROR  could not construct graph: could not detect workspaces: package.json: no workspaces found. Turborepo requires Yarn workspaces to be defined in the root package.json
------
executor failed running [/bin/sh -c turbo prune --scope=${SCOPE} --docker]: exit code: 1

5. 在子包package.json中添加monorepo根目录的workspaces配置后

=> ERROR [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker                                1.4s
------
 > [pruner 3/3] RUN turbo prune --scope=@mycoolproject/pack6 --docker:
#9 1.152 panic: runtime error: invalid memory address or nil pointer dereference
#9 1.152 [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x7d4121]
#9 1.152 
#9 1.152 goroutine 1 [running]:
#9 1.152 turbo/internal/prune.(*PruneCommand).Run(0xc000059850, {0xc00001e0a0, 0x2, 0x2})
#9 1.152        turbo/internal/prune/prune.go:110 +0x3a1
#9 1.153 github.com/mitchellh/cli.(*CLI).Run(0xc00012b900)
#9 1.153        github.com/mitchellh/cli@v1.1.2/cli.go:262 +0x5f8
#9 1.153 main.main.func7({0x0, 0x8d6360}, {0xc00001e090, 0x819510, 0x3}, {0x0, 0xc00000e020}, {0x0, 0x0}, 0xc00012b900, ...)
#9 1.153        turbo/cmd/turbo/main.go:154 +0x385
#9 1.153 main.main()
#9 1.153        turbo/cmd/turbo/main.go:159 +0x9e9
------
executor failed running [/bin/sh -c turbo prune --scope=${SCOPE} --docker]: exit code: 2

此外,即便侥幸完成构建,多数容器仍会崩溃,提示找不到turbo模块——尽管容器初始构建阶段已全局安装该模块。该项目在Linux机器上使用turbo v1.1.2及最新版本均可正常构建。

内容的提问来源于stack exchange,提问作者Roman B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:48:51