当前位置: 首页 > news >正文

使用yarn@4.6.0装包,项目是react+vite搭建的,项目无法启动,报错:

✘ [ERROR] Cannot read file: E:/source/m-apps/my-vite-app/.yarn/__virtual__/react-dom-virtual-81b5a735d4/5/C:/Users/13796/AppData/Local/Yarn/Berry/cache/react-dom-npm-19.2.0-10246904d4-10c0.zip/node_modules/react-dom/client.js

AI的回答:

这是一个在 Windows 上用 Yarn PnP + 全局缓存 + esbuild/Vite 时的已知路径问题:Yarn 会把依赖的 zip 放在全局缓存目录(C 盘用户目录),PnP 生成的虚拟路径里会出现类似
E:/.../.yarn/__virtual__/.../5/C:/Users/.../cache/...zip/node_modules/...
这种“盘符嵌套”的路径,esbuild 无法识别,导致 Cannot read file。最简单可行的修复方案(任选其一):方案 A(推荐):关闭 Yarn 的全局缓存
1) 在项目根目录的 .yarnrc.yml 中加入/修改:enableGlobalCache: false
2) 清理并重装依赖:- 删除 .yarn/cache(如果有)- yarn cache clean- yarn install
3) 重新启动 Vite。方案 B:改用 node_modules 链接器(暂避开 PnP)
1) 在 .yarnrc.yml 中设置:nodeLinker: node-modules
2) yarn install
3) 重新启动 Vite。方案 C:仅把有问题的包解压到本地(unplug)
1) 运行:yarn unplug react react-dom或在 package.json 增加:"dependenciesMeta": {"react": { "unplugged": true },"react-dom": { "unplugged": true }}
2) yarn install
3) 重新启动 Vite。备注
- 方案 A 的原理是让依赖的 zip 放在项目本地 .yarn/cache(与你的项目同盘符),避免路径里混入 C: 盘导致 esbuild 解析失败。
- 保持 Yarn PnP 的同时,A 通常就能解决问题;如果你更倾向于兼容性优先,B 最省心。
- 如果依然报错,确认 Node 版本为 18+/20+,并升级 Vite 和 esbuild 到较新版本,然后重新安装依赖。需要我看下你的 .yarnrc.yml、package.json 和 Vite 版本,我可以给出更精确的配置。

我的选择:

在根目录下添加文件.yarnrc.yml

.yarnrc.yml:

enableImmutableInstalls: falsehttpTimeout: 300000nodeLinker: node-modulesenableScripts: false

AI对各个字段含义的解释:

下面分别说明这些 .yarnrc.yml 配置项的作用、默认值与影响:- enableImmutableInstalls: false- 含义:允许安装过程中修改 yarn.lock/.pnp.* 等(即不强制“只读安装”)。- 默认:false(在 CI 环境通常会用 --immutable 或显式设为 true)。- 影响:便于本地开发自动更新锁文件;在 CI 中通常应开启以防依赖漂移。- httpTimeout: 300000- 含义:每个 HTTP 请求(如拉取包、元数据)的超时时间,单位毫秒。- 默认:30000(30 秒)。- 影响:设为 300000 即 5 分钟,适合网络较慢或有代理的环境,减少超时失败。- nodeLinker: node-modules- 含义:使用 node_modules 安装模式,而不是 Yarn 默认的 Plug’n’Play (pnp)。- 默认:pnp。- 影响:会生成并“提升”node_modules,兼容依赖 node_modules 的工具链,但磁盘占用更大、安装/解析可能更慢,失去 PnP 的一致性/性能优势。- enableScripts: false- 含义:禁用安装阶段执行依赖包的生命周期脚本(preinstall/install/postinstall/prepare 等)。- 默认:true。- 影响:提升安全性与可重复性,但可能导致需要编译/下载二进制的包无法正常安装(如 node-gyp、sharp、esbuild 等)。你项目自身的脚本可通过 yarn run 手动执行;如需在禁用情况下仅允许部分包执行脚本,可配合 yarn-plugin-allow-scripts 白名单使用,或用环境变量 YARN_ENABLE_SCRIPTS=1 临时开启。

http://www.dtcms.com/a/564622.html

相关文章:

  • 末备案网站如何做cdnwordpress填写
  • 有做网站维护的做垂直行业网站利润分析
  • BSC 链代币加池全教程:从发币到流动性捆绑买入
  • AOI在钢铁行业检测领域中的应用
  • 【Solidity 从入门到精通】第1章 区块链与智能合约的基本原理
  • 股指期货持仓量增加说明什么?
  • 对商家而言网站建设的好处泰州市做网站
  • 深入探讨HarmonyOS中ListItem的滑动操作实现与优化
  • Tomcat SSL连接问题解决方案
  • ProtoBuf语法揭秘:探秘编译魔法与性能优化策略,解锁多层级选项配置的底层奥秘
  • StarRocks数据仓库
  • 玩转Rust高级应用 结合使用 future、任务和线程,如何进行任务内并发(intratask concurrency)支持
  • 移动端商城网站开发网站建设+荆州
  • 2G2核服务器安装ES 7X版本
  • 前端基础之《React(7)—webpack简介-ESLint集成》
  • 《 Linux 修炼全景指南: 五 》Linux 文件权限与用户管理全指南:构筑系统安全的第一道防线
  • 生命周期评价(LCA):理论、方法与工具、典型案例全解析
  • 漂亮的网站底部代码仿站参考网站
  • 【零基础学MySQL】第十二章:DCL详解
  • 借助Github Action实现通过 HTTP 请求触发邮件通知
  • C语言实现策略模式
  • 微美全息(NASDAQ:WIMI)容错量子计算赋能,大规模机器学习模型高效量子算法获突破
  • 怎么通过贷款网站找做贷款客户wordpress主题支持分页
  • Linux网络编程核心实践:TCP/UDP socket与epoll高并发服务器构建
  • Kafka:专注高吞吐与实时流处理的分布式消息队列
  • 【基于one-loop-per-thread的高并发服务器】--- 项目介绍模块划分
  • 玩转Rust高级应用 如何于 `match` 分支模式之后的额外 `if` 条件,指定匹配守卫提供的额外条件
  • 太原理工大学头歌作业--2025数据结构实验一:顺序表
  • GNSS 高精度定位一体机的测试
  • Rust编程学习 - 如何学习有关函数和闭包的高级特性,这包括函数指针以及返回闭包