当前位置: 首页 > 知识库问答 >
问题:

在打包的电子应用程序中执行node.js脚本

百里鸿祯
2023-03-14

在电子封装的应用程序中,我试图从node_modules依赖项执行服务器文件。从主要过程中,我正在尝试这样的东西:

var cp = require('child_process')
cp.execFile('node', path.join(__dirname, 'node_modules/my-module/server.js'))

当从本地命令行启动我的应用程序时,我看到服务器按预期启动,但当打包为asar时,服务器不会按预期启动。实现这一目标的正确方法是什么?

注:
我已经调查了https://electron.atom.io/docs/tutorial/application-packaging/#executing-asar存档中的二进制文件:

有一些节点API可以执行诸如child_进程之类的二进制文件。执行,子进程。产卵和子进程。execFile,但仅支持execFile在asar存档中执行二进制文件。

此外,看到了这个SO回答:在ASAR存档中执行一个脚本,该脚本说我需要需要我的脚本-然而,我认为这是错误的。这实际上会在相同的进程中生成此脚本(一旦需要),而不是在执行exexFile时。

共有1个答案

璩华辉
2023-03-14

你们不需要把节点和电子捆绑在一起。只需确保您的“节点\模块/我的模块/服务器”。js’用asar打包并使用

cp.fork(path.resolve(__dirname, 'node_modules/my-module/server.js'))

或者

cp.fork(require.resolve('my-module/server.js'))

它应该很好用。

这样,electron将使用捆绑节点,向其添加透明asar支持,并从asar归档运行脚本。

如果你cp.exec文件('节点'...你将使用外部节点,这不支持asar。

 类似资料:
  • 我有一个简单的电子应用程序,我想在多个平台上运行。我从git挂钩启动应用程序。我有多个特定于平台的应用程序包发布到npm。windows路径运行良好。下面是我的windows commit msg钩子脚本(它运行我的electron apps.exe,效果很好): 我在mac上安装了这个git钩子脚本(它不起作用)。 当mac钩子运行时,它会出现以下错误: 看起来我可能试图在mac上错误地启动这个

  • 问题内容: 因为Node.js现在也可以在Windows上使用,所以我想共享我的脚本而不包含node.exe。是否可以将脚本(没有更多文件)与node.exe一起打包到一个可执行文件中? 问题答案: 您绝对可以,并且使用JXcore非常容易。 在Windows上安装JXcore之后,只需运行: 这将产生一个.exe文件,您可以分发该文件并且可以在没有任何外部依赖项的情况下执行该文件(您甚至在系统上

  • 问题内容: 在最新版本(v0.31.0)中,电子附带了静态链接的FFMpeg库(不是命令行工具,请参见#2588) 我知道很多用于ffmpeg的nodejs模块,但是它们看起来都像是命令行工具的api,那么理想情况下我该如何访问与电子捆绑在一起的ffmpeg库并编码流? 问题答案: 当前这是不可能的,因为没有针对Node.js的不错的库。意思是,只有这样抽象了CLI。但是,可以将其编译和链接为节点

  • 我的程序是这样工作的:

  • 为缓解 Windows 下路径名过长的 问题, 略微加快一下 require的速度以及隐藏你的源代码,你可以选择把你的应用打包成 asar档案文件,这只需要对你的源代码做一些很小的改动。 大部分用户可以毫不费力地使用这个功能,因为它electron-packager,、electron-forge和electron-builder中都得到了支持,开箱即用。 如果你没有使用这些工具中的任何一个,那么

  • 我有一个电子应用程序,可以在单独的选项卡中编辑多个文件,比如Atom或VS代码。当通过对话框打开文件时,或者当应用程序未运行(通过解析argv)时,通过“打开方式”打开文件时,此功能可以正常工作。 然而,我不知道如何将通过“打开”打开的文件“添加”到已经运行的应用程序——默认情况下,会创建该应用程序的第二个新实例。我希望能够以某种方式将文件的路径传递给原始应用实例。 我浏览了文档,发现唯一有希望的