Yarn Workspaces添加本地依赖时生成空文件夹问题求助
}
...
}
### backend的package.json ```json { "private": true, "name": "@project/backend", "version": "1.0.0", "scripts": { ... } ... }
frontend的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": "yarn@3.6.1", "scripts": { ... }, "dependencies": { "@project/backend": "1.0.0", ... } ... }
后端包含前端所需的多项资源,因此我希望将backend添加为frontend的依赖,执行了以下命令:
yarn workspace @project/frontend add @project/backend@1.0.0
预期行为
- frontend的node_modules中生成@project/backend文件夹
- 可通过
import访问后端类型及其他资源 - 操作过程无错误抛出
实际行为
- frontend的node_modules中生成了@project文件夹,但为空
- 无法通过
import访问后端类型 - 操作过程无错误抛出
此前从前端导入后端是正常工作的,推测并非Yarn问题,而是某些更改导致,但即使恢复package.json至之前状态仍无法解决,特此求助。
排查与解决步骤
1. 补全backend的package.json关键配置
确保backend的package.json中指定了对外暴露的入口文件,TypeScript项目还需配置类型入口:
{ "private": true, "name": "@project/backend", "version": "1.0.0", "main": "./dist/index.js", // 编译后的JS入口 "types": "./dist/index.d.ts", // TypeScript类型入口 "scripts": { "build": "tsc" // 新增编译脚本,确保代码能生成到dist目录 } ... }
缺少这些字段,Yarn无法识别后端包的可访问资源,会导致生成空目录。
2. 编译backend代码
执行命令确保后端代码完成编译:
yarn workspace @project/backend build
未编译的源码无法被前端正确导入。
3. 清理缓存并重装依赖
缓存异常可能导致依赖链接失效,执行以下命令重置:
yarn cache clean yarn install
4. 验证工作区识别状态
在根目录执行命令,确认所有工作区被Yarn正确识别:
yarn workspaces list
如果backend未出现在列表中,需检查根目录workspaces配置是否正确。
5. 调整TypeScript路径映射(若使用TS)
在frontend的tsconfig.json中添加路径映射,指向后端编译后的文件:
{ "compilerOptions": { "baseUrl": ".", "paths": { "@project/backend/*": ["../../backend/dist/*"] }, "composite": true // 启用复合项目,优化跨工作区类型解析 } }
内容的提问来源于stack exchange,提问作者The Blind Hawk
相关产品推荐
相关产品推荐

