移动到不同文件夹时,电子应用程序不会产生子进程

分享于2022年07月17日 electron javascript node.js 问答
【问题标题】:移动到不同文件夹时,电子应用程序不会产生子进程(Electron app not spawning child process when moved to different folder)
【发布时间】:2022-01-03 00:17:26
【问题描述】:

在我的应用程序中单击按钮时,会使用 fork() 函数生成一个子进程。这可以按预期工作,即使捆绑到我的 dist 文件夹中的 exe 中(通过 electron-builder )。但是,当我将文件夹 win-unpacked 移动到另一个文件夹进行测试时,不会产生子进程。

dist 文件夹结构如图:

dist
|-.icon-ico
|- win-unpacked
|- builder-debug.yaml
|- builder-effective-config.yaml

win-unpacked 是所有主要文件所在的位置(例如 app.asar、app.exe 等)。

当它在我的主要开发文件夹中时:

app
|-build
|-node_modules
|-dist
|-public
|-src

子进程已生成,但是,在仅包含 dist 的测试文件夹中,子进程未生成。

生成我使用过的子进程:

child = fork(require("path").join(__dirname, "sts/states.js"));

在控制台中, __dirname 记录为 C:\Users\me\Documents\mainApp\dist\win-unpacked\resources\app.asar\build

sts 文件夹位于 build 文件夹中。

当我从 app 文件夹中取出 dist 并将其放入另一个文件夹进行测试时,我实际上不知道这是什么原因。


【解决方案1】:

this answer 的帮助下,我找到了一些方向。我补充说:

"build": {
    "extraResources": "node_modules",
    "files": [
      "!node_modules"
    ]
}

到我的 package.json ,现在它正在生成子进程。缺点是文件现在更大(1.45GB)。