问题标签 [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.

0 投票
2 回答
3229 浏览

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 版本,我没有最后一个包版本。一旦我更新了电子包,一切正常!希望这会对某人有所帮助

0 投票
0 回答
139 浏览

node.js - nodejs 动态导入失败但文件存在(不是无扩展名问题)

我有一个 commonjs 模块,它使用动态导入来加载 ES 模块,但导入失败并显示Error [ERR_MODULE_NOT_FOUND]: Cannot find module. 奇怪的是,错误消息声称它找不到文件,然后建议完全相同的文件:

为了简洁起见,我截断了路径,但它们是相同的(使用 diff 工具验证),并且我在错误输出中添加了一些换行符以提高可读性。

在使用动态导入之前,我已经验证了:

  1. fs.readdirSync()返回一个包含两个文件的数组:['index.mjs','main.cjs']
  2. fs.statSync()返回预期的对象index.mjs
  3. index.mjsstat.isFile()回报true
  4. fs.readFileSync()正确返回的内容index.mjs

我在 Node.js 源代码中看到,它使用的是fs.Statand的内部版本fs.Stat#isFile()

那么为什么这不起作用import()呢?

代码是这样的:

主要的.cjs 索引.mjs

注意:如果没有由 electron-builder 和 asar 捆绑,则不会发生此问题(但在这两种情况下,文件路径实际上是相同的,只是My.app/Contents/Resources/app.asar/中间没有)。前npx electron ./build/backend/main.cjs(工作正常)。

0 投票
0 回答
34 浏览

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 目录中?

0 投票
0 回答
51 浏览

javascript - Electron:如果我已经在使用捆绑器(Webpack),我还应该考虑使用 asar 吗?

electron-packager 文档提到了我可能要考虑将我的应用程序打包到 asar 存档(Electron 特定存档格式)的三个原因:

  1. 避免 Windows 上的长路径名问题
  2. 在我的代码中加快require()调用速度
  3. 让最终用户更难检查源代码(他们必须首先下载 asar 并取消归档应用程序)

现在,我已经在使用 Webpack,它已经将我所有的 JS 捆绑到一个文件中,所以:

  1. 没有长嵌套路径名 -> Windows 上没有长路径名问题
  2. 代码中没有require()调用 -> 没有什么可以加快速度
  3. 我可以缩小和丑化代码 -> 已经很模糊了

另一方面,在我看来,使用 asar 可能存在风险,因为它增加了另一层逻辑。这是一个可能泄漏的抽象。

我错过了什么?

即使在使用 Webpack 时,我仍然应该考虑使用 asar 有什么原因吗?

0 投票
0 回答
12 浏览

reactjs - 在 React 中打开和访问 Asar 文件的内容

我收到了一个 asar 文件,需要在我的 react 应用程序中以某种方式解压它,我一直在尝试使用不同的工具,但找不到任何有效的工具。是否有任何人都知道的工具允许我获取 asar 文件和/或允许我将其内容解压缩到某些数据结构或数组或其他东西中?

0 投票
0 回答
11 浏览

electron-forge - 我如何在电子锻造中使用 asarmor?

我如何在电子锻造中使用 asarmor?

我想使用 asarmor 让我的电子应用程序更强大,我该如何使用电子锻造?

0 投票
1 回答
26 浏览

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 开发人员的。

  1. 有没有办法从外部 JS 文件以编程方式加载 asar 包内的节点模块?

  2. 是否可以将迁移脚本捆绑到 asar 中,同时让 Mikro ORM 在 asar 包中搜索它们?