Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

怎样在dist-electron下生成其他js文件? #243

Open
mundane799699 opened this issue May 31, 2024 · 6 comments
Open

怎样在dist-electron下生成其他js文件? #243

mundane799699 opened this issue May 31, 2024 · 6 comments

Comments

@mundane799699
Copy link

electron/main.ts:

ipcMain.handle("query-db", () => {
  return new Promise((resolve, reject) => {
    const worker = new Worker(path.join(__dirname, "worker.js"));
    worker.postMessage("select * from tb_xhs_collect");

    worker.on("message", (result) => {
      if (result.error) {
        reject(result.error);
      } else {
        resolve(result);
      }
      worker.terminate();
    });

    worker.on("error", (error) => {
      reject(error);
      worker.terminate();
    });
  });
});

electron/worker.ts:

import { sqQuery } from "./sqlite";
import { parentPort } from "worker_threads";

parentPort.on("message", async (sql) => {
  try {
    const result = await sqQuery({ sql });
    parentPort.postMessage(result);
  } catch (error) {
    parentPort.postMessage({ error: error.message });
  }
});

启动后调用query-db方法发现报错:Error occurred in handler for 'query-db': Error: Cannot find module 'D:\project\VsCodeProjects\red-archive\dist-electron\worker.js'
at Module._resolveFilename (node:internal/modules/cjs/loader:1055:15)
at Module._load (node:internal/modules/cjs/loader:908:27)
at c._load (node:electron/js2c/node_init:2:13672)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:96:12)
at MessagePort. (node:internal/main/worker_thread:186:26)
at [nodejs.internal.kHybridDispatch] (node:internal/event_target:807:20)
at exports.emitMessage (node:internal/per_context/messageport:23:28) {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
那么怎样才可以让worker.js出现在dist-electron目录下面呢?

@lancemach
Copy link

我也遇到同样的问题,目前还没有找到解决方案,如果找到了麻烦相互告知下,谢谢

@mundane799699
Copy link
Author

我也遇到同样的问题,目前还没有找到解决方案,如果找到了麻烦相互告知下,谢谢

可以参考下我的这个,希望对你有用。https://github.com/mundane799699/electron-vite-project

@lancemach
Copy link

我看了你的这个配置是在entry里面引入了文件,
但是我的需求目前是当前我还有一个静态文件keygen.pem文件这个需要如何操作呢

@mundane799699
Copy link
Author

我看了你的这个配置是在entry里面引入了文件, 但是我的需求目前是当前我还有一个静态文件keygen.pem文件这个需要如何操作呢

#110

@think-flow
Copy link
Contributor

你可以参考下这个vite插件 https://github.com/think-flow/l4d2addon_installer/blob/main/vite.plugin.modulePath.ts
然后就可以通过添加 "?modulePath" 查询参数来导入你的worker

import workerPath from './worker?modulePath'

ipcMain.handle("query-db", () => {
  return new Promise((resolve, reject) => {
    const worker = new Worker(workerPath);
    ......
  });
});

@yejimeiming
Copy link
Contributor

yejimeiming commented Sep 18, 2024

我看了你的这个配置是在entry里面引入了文件, 但是我的需求目前是当前我还有一个静态文件keygen.pem文件这个需要如何操作呢

keygen.pem 完全可以放到项目根目录,或者建一个 static 目录。记得在 electron-builder.json5 文件的 files 选项中加入一下,这样文件会被收录到构建好的 App 中。在主进程中通过文件相对路径就可以读取 keygen.pem 文件了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants