From 1e5f8eb33bc41cb59faf059e83701152785cabea Mon Sep 17 00:00:00 2001 From: yingyu5658 Date: Sat, 13 Dec 2025 08:33:08 +0800 Subject: Initial commit --- ...on-CommonJS-require\350\270\251\345\235\221.md" | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 "content/posts/Electron-CommonJS-require\350\270\251\345\235\221.md" (limited to 'content/posts/Electron-CommonJS-require踩坑.md') diff --git "a/content/posts/Electron-CommonJS-require\350\270\251\345\235\221.md" "b/content/posts/Electron-CommonJS-require\350\270\251\345\235\221.md" new file mode 100644 index 0000000..de0388f --- /dev/null +++ "b/content/posts/Electron-CommonJS-require\350\270\251\345\235\221.md" @@ -0,0 +1,53 @@ +--- +abbrlink: 472869193 +categories: +- 往昔 +date: "2025-05-31T09:07:36+08:00" +tags: +- 前端 +- Electron +title: Electron CommonJS require踩坑 +--- +最近在开发一个Electron项目,在导入类的时候有以下报错: +``` +node:internal/modules/cjs/loader:1411 Uncaught Error: Cannot find module './File' +Require stack: +- E:\Develop\markdown-editor\src\html\index.html + at Module._resolveFilename (node:internal/modules/cjs/loader:1408:15) + at a._resolveFilename (node:electron/js2c/renderer_init:2:2643) + at defaultResolveImpl (node:internal/modules/cjs/loader:1064:19) + at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1069:22) + at Module._load (node:internal/modules/cjs/loader:1218:37) + at c._load (node:electron/js2c/node_init:2:17950) + at s._load (node:electron/js2c/renderer_init:2:31718) + at TracingChannel.traceSync (node:diagnostics_channel:322:14) + at wrapModuleLoad (node:internal/modules/cjs/loader:242:24) + at Module.require (node:internal/modules/cjs/loader:1494:12) +``` +提示找不到模块。 + +Electron中,使用require语句导入,都是默认从项目跟目录开始查找,所以要拼接完整路径。使用绝对路径也是不行的,在IDE里可以跳转,但是一运行就是找不到模块 +`const File = require("src/js/File")` + +``` +Uncaught Error: Cannot find module 'src/js/File' +Require stack: +- E:\Develop\markdown-editor\src\html\index.html + at Module._resolveFilename (node:internal/modules/cjs/loader:1408:15) + at a._resolveFilename (node:electron/js2c/renderer_init:2:2643) + at defaultResolveImpl (node:internal/modules/cjs/loader:1064:19) + at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1069:22) + at Module._load (node:internal/modules/cjs/loader:1218:37) + at c._load (node:electron/js2c/node_init:2:17950) + at s._load (node:electron/js2c/renderer_init:2:31718) + at TracingChannel.traceSync (node:diagnostics_channel:322:14) + at wrapModuleLoad (node:internal/modules/cjs/loader:242:24) + at Module.require (node:internal/modules/cjs/loader:1494:12) +``` + +## 解决方法 +使用path.join拼接完整路径 +```js +const File = require(path.join(__dirname, "../js/File.js")); +``` +经过测试,只能用这种方法导入,太怪了 -- cgit v1.2.3