问题标签 [asar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - ReferenceError:BigInt 未定义 Asar Electron Nodejs
您好一直在尝试提取并重新打包 app.asar 以更新包内的文件:
await asar.extractAll(path.join(__dirname, './app.asar'),path.join(__dirname, './destfolder'));
然后更改destfolder中的一些文件
await asar.createPackage(path.join(__dirname, './destfolder'),path.join(__dirname, './app.asar'));
但我一直收到这个错误:
平台:Windows x64 节点版本:v14.15.1
我不知道这是否是一个错误,但我已经坚持了大约 2 天,没有找到解决方案我在这里创建了一个问题:https ://github.com/electron/asar/issues/ 217 感谢您的努力,请不要犹豫询问任何信息
更新
在节点模块 asar 文件夹中 package.json :
我尝试将其更改为:
我还是没有工作
上次更新已解决
Electron 运行它自己的 nodejs 版本,我没有最后一个包版本。一旦我更新了电子包,一切正常!希望这会对某人有所帮助
node.js - nodejs 动态导入失败但文件存在(不是无扩展名问题)
我有一个 commonjs 模块,它使用动态导入来加载 ES 模块,但导入失败并显示Error [ERR_MODULE_NOT_FOUND]: Cannot find module
. 奇怪的是,错误消息声称它找不到文件,然后建议完全相同的文件:
为了简洁起见,我截断了路径,但它们是相同的(使用 diff 工具验证),并且我在错误输出中添加了一些换行符以提高可读性。
在使用动态导入之前,我已经验证了:
fs.readdirSync()
返回一个包含两个文件的数组:['index.mjs','main.cjs']
fs.statSync()
返回预期的对象index.mjs
index.mjs
的stat.isFile()
回报true
fs.readFileSync()
正确返回的内容index.mjs
我在 Node.js 源代码中看到,它使用的是fs.Stat
and的内部版本fs.Stat#isFile()
。
那么为什么这不起作用import()
呢?
代码是这样的:
主要的.cjs 索引.mjs注意:如果没有由 electron-builder 和 asar 捆绑,则不会发生此问题(但在这两种情况下,文件路径实际上是相同的,只是My.app/Contents/Resources/app.asar/
中间没有)。前npx electron ./build/backend/main.cjs
(工作正常)。
javascript - 在 Electron 应用程序中仅使用 asar 打包某些目录
我有一个电子应用程序,我试图使用asar来打包 node_modules 和源目录,不包括其他目录。
我注意到在asar
启用启用的应用程序时,整个应用程序目录都被打包了。这并不理想,因为一些可执行文件和 DLL 需要在 asar 文件之外可用。
我试过的
目前,我有一个打包源和 node_modules 目录的脚本(使用 asar)。此脚本在 Electron-Forge 构建可执行文件后执行。但是 Electron 似乎不会自动检查 asar 文件中的 source 和 node_module 文件。我收到错误"Error: Cannot find module index.js"
。这给出了想要的文件结构,但不适用于 Electron(参见下面的“文件结构”)。
文件结构
创建可执行文件之前的文件结构:
创建可执行文件后所需的文件结构:
或以下(app.asar
文件应仅包含sources/
andnode_modules/
目录):
重要的是 Electron 知道何时使用asar
文件以及何时直接使用文件。是否可以像这样配置它,或者类似的东西?
问题
有没有办法将 Electron/Electron-Forge 配置为仅将某些目录打包到 asar 文件中,而将其他目录复制到 resource/app 目录中?
javascript - Electron:如果我已经在使用捆绑器(Webpack),我还应该考虑使用 asar 吗?
electron-packager 文档提到了我可能要考虑将我的应用程序打包到 asar 存档(Electron 特定存档格式)的三个原因:
- 避免 Windows 上的长路径名问题
- 在我的代码中加快
require()
调用速度 - 让最终用户更难检查源代码(他们必须首先下载 asar 并取消归档应用程序)
现在,我已经在使用 Webpack,它已经将我所有的 JS 捆绑到一个文件中,所以:
- 没有长嵌套路径名 -> Windows 上没有长路径名问题
- 代码中没有
require()
调用 -> 没有什么可以加快速度 - 我可以缩小和丑化代码 -> 已经很模糊了
另一方面,在我看来,使用 asar 可能存在风险,因为它增加了另一层逻辑。这是一个可能泄漏的抽象。
我错过了什么?
即使在使用 Webpack 时,我仍然应该考虑使用 asar 有什么原因吗?
reactjs - 在 React 中打开和访问 Asar 文件的内容
我收到了一个 asar 文件,需要在我的 react 应用程序中以某种方式解压它,我一直在尝试使用不同的工具,但找不到任何有效的工具。是否有任何人都知道的工具允许我获取 asar 文件和/或允许我将其内容解压缩到某些数据结构或数组或其他东西中?
electron-forge - 我如何在电子锻造中使用 asarmor?
我如何在电子锻造中使用 asarmor?
我想使用 asarmor 让我的电子应用程序更强大,我该如何使用电子锻造?
electron - 启用了 asar 的带有 @mikro-orm 迁移脚本的电子
我在我的Electron应用程序中使用@mikro-orm/migrations,我创建了迁移文件并希望在生产模式下运行数据库迁移,同时我还想在 Electron 中启用 asar 打包以提高应用程序启动速度.
如果我不启用 asar 打包,文件夹结构如下,一切正常:
启用 asar 打包后,文件夹结构变为:
结果,我收到了类似Cannot find module '@mikro-orm/migrations'
while load的错误Migration20220224172334.js
,这是迁移脚本的内容:
我认为这个问题是针对 Electron 开发人员或 Mikro ORM 开发人员的。
有没有办法从外部 JS 文件以编程方式加载 asar 包内的节点模块?
是否可以将迁移脚本捆绑到 asar 中,同时让 Mikro ORM 在 asar 包中搜索它们?