解决百度网盘安装报错:D 盘 package.json 触发 Electron ESM/CJS 冲突

解决百度网盘安装报错:D 盘 package.json 触发 Electron ESM/CJS 冲突

背景与现象

在 Windows 上安装或启动百度网盘时,主进程报错并直接退出:

复制代码
A JavaScript error occurred in the main process
Uncaught Exception:
Error [ERR_REQUIRE_ESM]: requireO of ES Module
D:\BaiduNetdisk\module\BrowserEngine\resources\core.asar\main.js from
D:\BaiduNetdisk\module\BrowserEngine\resources\app.asar\dist\electron\entry.js not
supported.
main.js is treated as an ES module file as it is a js file whose nearest parent
package.json contains "type": "module" which declares all .js files in that package
scope as ES modules.
Instead rename main.js to end in .cjs, change the requiring code to use dynamic
importO which is available in all CommonJS modules, or change "type": "module" to
'type": "commonjs" in D:\package.json to treat all .js files as CommonJS (using .mjs for
all ES modules instead).
...

提示里有一条非常关键的线索:

  • main.js is treated as an ES module
  • 最近的父级 package.jsonD:\package.json

原因分析

Node/Electron 会按照"就近包作用域"的规则来解析模块类型:

  • 如果某个 .js 文件向上找到最近的 package.json,且其中 "type": "module"
    该作用域内的所有 .js 都会按 ESM 解析。
  • 百度网盘的 Electron 入口仍在使用 require() 加载 main.js
    但它被判定为 ESM,于是抛出 ERR_REQUIRE_ESM

换句话说:D 盘根目录的 package.json 把整个 D:\ 变成了 ESM 作用域

导致 D:\BaiduNetdisk\... 下的 .js 被错误地当成 ES Module。

解决方案(本次采用)

在百度网盘安装目录下放置一个更近的 package.json,覆盖模块类型:

D:\BaiduNetdisk\package.json

内容如下:

json 复制代码
{
  "type": "commonjs"
}

这样 D:\BaiduNetdisk\ 及其子目录中的 .js 会按 CommonJS 解析,

Electron 的 require() 能正常工作。

验证方法

  • 重新启动百度网盘,确认不再弹出 ERR_REQUIRE_ESM
  • 若仍报错,检查是否还有其他上层目录存在影响模块解析的 package.json

可选方案

  1. 把百度网盘安装到不受 D:\package.json 影响的路径(如 C:\Program Files\BaiduNetdisk)。
  2. D:\package.json 不是必需文件,可移除或修改其 "type" 配置。

回滚方式

如需回滚,只需删除或改回以下文件:

  • D:\BaiduNetdisk\package.json

小结

这类报错往往不是应用本身的问题,而是 安装路径中的 package.json 改变了模块解析规则

关键是识别报错里出现的"最近父级 package.json"提示,然后用更近的包作用域进行覆盖。


如果你的环境中存在多个 Node 项目,建议不要在磁盘根目录放 package.json

避免对其它程序产生意外影响。

相关推荐
candyTong12 小时前
一觉醒来,大模型就帮我排查完页面性能问题
前端·javascript·架构
玩嵌入式的菜鸡12 小时前
网页访问单片机设备---基于mqtt
前端·javascript·css
前端一小卒13 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
豹哥学前端17 小时前
用猜数字游戏,一口气掌握 JavaScript 核心知识点(附完整代码)
前端·javascript
忆往wu前17 小时前
从0到1一步步拆解搭建,梳理一个 Vue3 简易图书后台全开发流程
前端·javascript·vue.js
shao91851618 小时前
第3章(2)——使用Gradio JavaScript Client
javascript·node.js·cdn·gradio·job·events·playcode
光影少年18 小时前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs
Mr.mjw18 小时前
vue中封装一个环形进度条组件,根据外部盒子大小自适应变化
前端·javascript·vue.js
无心使然18 小时前
Openlayers调用ArcGis影像服务之一动态地图、地图切片(/exportImage)
前端·javascript·数据可视化
像我这样帅的人丶你还18 小时前
前端监控体系与实践(二):全局监控
前端·javascript·vue.js