electron 打包 appasar 内部 js文件夹下面如何互相引用 js 报 Uncaught Error Cannot find module
如果在 electron 打包 app.asar 内部 js 文件夹下面的 js 文件中互相引用,可能会遇到以下错误:
Uncaught Error: Cannot find module
这是因为 electron 打包后,文件被压缩到了 app.asar 中,而 require() 方法无法在 asar 文件中工作。
为了解决这个问题,可以使用 node-require 解决方案。node-require 是一个允许在 asar 文件中使用 require() 方法的模块。
可以使用以下步骤来使用 node-require:
- 安装 node-require:
npm install node-require --save
- 在需要互相引用的 js 文件中,添加以下代码:
const requireFunc = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require;
const fs = requireFunc("fs");
const path = requireFunc("path");
const Module = requireFunc("module");
const appRoot = path.dirname(require.main.filename);
const requireFromAppRoot = function (modulePath) {
const absolutePath = path.join(appRoot, modulePath);
return Module._load(absolutePath, null, true);
};
- 使用 requireFromAppRoot() 方法来引用其他 js 文件:
const otherModule = requireFromAppRoot("./path/to/other/module.js");
这样就可以在 electron 打包后的 app.asar 内部的 js 文件夹中互相引用 js 文件了
原文地址: https://www.cveoy.top/t/topic/eFBO 著作权归作者所有。请勿转载和采集!