web-infra-dev / modern.js

A progressive web framework based on React and Rsbuild.
https://modernjs.dev/en/
MIT License
4.46k stars 369 forks source link

[Bug]: 在 Monorepo 方案下通过 nestjs cli 创建的项目会引起其他子项目 dev 命令启动错误。 #1061

Closed StringKe closed 2 years ago

StringKe commented 2 years ago

版本信息

site:

Legend: production dependency, optional only, dev only

site@0.1.0 /Users/chen/Project/Test/modernjs-project-2/apps/site

devDependencies:
@modern-js/app-tools 1.6.4

api:
none

问题详情

Monorepo 创建 nestjs 项目会导致其他子项目无法启动 dev 模式。

复现链接

https://github.com/StringKe/modernjs-project-2

复现步骤

终端执行记录:https://asciinema.org/a/494512

  1. 通过 npx @modern-js/create 创建 Monorepo 项目
  2. 通过 pnpm new 创建一个 MWA 项目 (此时可以启动 dev)
  3. 进入 apps 目录通过 nest new 创建 nestjs 项目 (此时 nestjs 项目可以启动)
  4. 进入刚才创建的 MWA 项目,此时无法启动 dev
yimingjfe commented 2 years ago

因为多个 webpack 实例导致的,因为 @nestjs/cli 将 webpack 版本锁在了 5.71.0 版,Modernjs 兼容 5.71.0 版本的 webpack 的,可以把 webpack 版本锁在 5.71.0 版。

项目根目录下,修改 package.json 锁版本

// package.json
  "pnpm": {
    "overrides": {
      "webpack": "5.71.0"
    }
  }