用angularedelectron打包可执行二进制文件

2024-05-23 22:41:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在Linux上用angular electron打包一个python二进制可执行文件。我从stack overflow得到了这个答案。 bundling precompiled binary into electron app。你知道吗

在主要技术支持我已经编写了这个额外的代码片段。我已经将可执行二进制文件放在节点\u modules/datapod/datapod中,并将此路径符号链接到节点\u modules/.bin/文件夹中。你知道吗

  const spawn = require('child_process').spawn;
  var appRootDir = require('app-root-dir').get();

  var datapodpath=appRootDir+'/node_modules/datapod/datapod';
  console.log(datapodpath)

  const datapod = spawn(datapodpath, [], {});  //add whatever switches you need here

  datapod.stdout.on( 'data', data => {
      console.log( `stdout: ${data}` );
    });
  datapod.stderr.on( 'data', data => {
      console.log( `stderr: ${data}` );
   })
   datapod.on( 'close', code => {
    console.log( `child process exited with code ${code}` );
  })

我做的时候一切都很好

npm启动

我还可以看到python应用程序的日志。当我这么做的时候

npm运行电子:linux你知道吗

应用程序使用二进制文件成功编译(因为使用二进制文件编译的应用程序的大小正好等于二进制文件的大小)。当我尝试运行这个编译后的应用程序时,它失败了,并出现以下错误。你知道吗

enter image description here 更新: 我尝试了另一种方法,但仍然没有结果。我已经创建了一个新的文件夹externals/bin并复制了这个文件夹中的可执行二进制文件“datapod”。要将此文件夹复制到打包的应用程序中,请将以下行添加到electron-建筑商.js你知道吗

 "files": [
        "**/*",
        "!**/*.ts",
        "!*.code-workspace",
        "!LICENSE.md",
        "!package.json",
        "!package-lock.json",
        "!src/",
        "!e2e/",
        "!hooks/",
        "!angular.json",
        "!_config.yml",
        "!karma.conf.js",
        "!tsconfig.json",
        "!tslint.json",
        "externals/bin"
    ],

在中编辑了我的代码主要技术支持文件

const appPath = process.env.NODE_ENV === 'production' ? process.resourcesPath : __dirname;


  const execPath =path.join(appPath, 'externals/bin/datapod');
  console.log(execPath)

编译成功,当我试图运行这个应用程序时,我得到了相同的错误。我在/tmp/.moun***/resources中打开了应用程序/应用asar与

npx asar extract /tmp/.mount_angulaG6ARST/resources/app.asar extrractedApp

文件夹的内容确实有externals/bin/datapod文件,但无法运行。你知道吗


Tags: 文件文件夹logjson应用程序databin二进制