执行`lerna run dev --scope [package-name]`命令出现报错的技术咨询
No packages remain after filtering 报错问题 嘿,这个报错我之前调试monorepo的时候也踩过坑!当你执行lerna run dev --scope [package-name]出现这个错误,本质是Lerna找不到你指定的包,下面是几个大概率能解决问题的排查方向:
检查包名的准确性:Lerna对包名的匹配是严格大小写和完全匹配的,别偷懒!比如你的包在
package.json里的name是@your-team/admin-dashboard,那你必须完整输入这个名称,不能只写admin-dashboard,也不能写错大小写(比如把Admin写成admin)。确认包在Lerna的扫描范围内:去根目录的
lerna.json看看packages数组的配置,比如如果你的包放在packages/frontend下,那lerna.json里得有类似"packages": ["packages/*"]的配置,要是路径写错了,Lerna根本扫不到这个包。另外也可以去项目根目录执行lerna list命令,看看输出里有没有你要指定的包,没有的话就是扫描范围的问题。别带多余的符号到命令里:注意你写的命令里的
[package-name]是占位符,实际执行的时候要替换成真实的包名,比如正确的命令应该是lerna run dev --scope @your-team/admin-dashboard,千万别把方括号[]留在命令里,这会让Lerna把[package-name]当成包名去找,肯定找不到。清理缓存重新安装:有时候Lerna的缓存会抽风,试试执行
lerna clean清空所有包的node_modules,然后重新跑npm install或者yarn install,之后再执行你的dev命令,大概率能解决一些奇怪的识别问题。检查Workspace配置(如果用了的话):如果你的项目同时用了npm/yarn workspace,确认根目录
package.json里的workspaces字段包含了目标包的路径,Lerna有时候会和workspace配置联动,路径不匹配也会导致找不到包。
内容的提问来源于stack exchange,提问作者iteasy

