如何解决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'),'./app.asar'));
但是我一直收到这个错误:
ReferenceError: BigInt is not defined
at new Filesystem (C:\Users\Path\to\project\node_modules\asar\lib\filesystem.js:17:5)
at Object.module.exports.readFilesystemSync (C:\Users\Path\to\project\node_modules\asar\lib\disk.js:85:24)
at Object.module.exports.extractAll (C:\Users\Path\to\project\node_modules\asar\lib\asar.js:170:27)
at Request._callback (C:\Users\Path\to\project\server.js:221:26)
at Request.init.self.callback (C:\Users\Path\to\project\node_modules\request\request.js:185:22)
at Request.emit (events.js:182:13)
at Request.<anonymous> (C:\Users\Path\to\project\node_modules\request\request.js:1154:10)
at Request.emit (events.js:182:13)
at IncomingMessage.<anonymous> (C:\Users\Path\to\project\node_modules\request\request.js:1076:12)
at Object.onceWrapper (events.js:273:13)
at IncomingMessage.emit (events.js:187:15)
at endReadableNT (_stream_readable.js:1090:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
平台:Windows x64 节点版本:v14.15.1
我不知道这是否是一个错误,但我已经被困在这个问题上大约 2 天了,但没有找到解决方案 我在这里创建了一个问题:https://github.com/electron/asar/issues/217 感谢您的努力,不要犹豫询问任何信息
更新
在节点模块 asar 文件夹 package.json 中:
"standard": {
"env": {
"mocha": true
},"globals": [
"BigInt"
]},
我尝试将其更改为:
"standard": {
"env": {
"ES2020": true,"browser": true,"node": true,"mocha": true
},"globals": {
"BigInt":true
}},
我还是没有工作
上次更新已解决
Electron 运行它自己的 nodejs 版本,而我没有最新的软件包版本。一旦我更新了我的电子包,一切正常!希望这会帮助某人
解决方法
该错误显然来自 asar 包的 lib/filesystem.js 中的这一行代码:
this.offset = BigInt(0)
而且,该错误显然意味着您有一个 Electron 在构建您的应用程序时使用的 nodejs 版本,该版本不支持 v10.4 中添加的 BigInt
。
因此,尽管您认为您使用的是 v14.15.1,但这显然不是 Electron 用于构建您的应用程序的内容。您需要升级您在这个电子项目中使用的 nodejs 版本。
您可以通过将其添加到您自己的项目代码中来确认正在使用的 nodejs 版本:
console.log(process.version);
,
如果您使用 nvm 管理您的节点版本,请检查 node -v
和 nvm alias default
是否返回相同的节点版本。
像 jenkins 这样的工具,永远...启动 nodejs 应用程序,将使用 node 的默认版本,这可能与终端控制台使用的版本不同。
检查:nvm list
修正差异:nvm alias default "node -v"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。