怎样在dist-electron下生成其他js文件?
mundane799699 opened this issue · 6 comments
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目录下面呢?
我也遇到同样的问题,目前还没有找到解决方案,如果找到了麻烦相互告知下,谢谢
我也遇到同样的问题,目前还没有找到解决方案,如果找到了麻烦相互告知下,谢谢
可以参考下我的这个,希望对你有用。https://github.com/mundane799699/electron-vite-project
我看了你的这个配置是在entry里面引入了文件,
但是我的需求目前是当前我还有一个静态文件keygen.pem文件这个需要如何操作呢
我看了你的这个配置是在entry里面引入了文件, 但是我的需求目前是当前我还有一个静态文件keygen.pem文件这个需要如何操作呢
你可以参考下这个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);
......
});
});
我看了你的这个配置是在entry里面引入了文件, 但是我的需求目前是当前我还有一个静态文件keygen.pem文件这个需要如何操作呢
keygen.pem
完全可以放到项目根目录,或者建一个 static
目录。记得在 electron-builder.json5
文件的 files
选项中加入一下,这样文件会被收录到构建好的 App 中。在主进程中通过文件相对路径就可以读取 keygen.pem
文件了。