I was trying to execute node_modules/some_package/some_js.js from renderer using contextBridge. It works in dev server, but in packaged app.
Here is my preload.js code.
import { exec, fork } from "child_process";
import { contextBridge } from "electron";
import path from "path";
contextBridge.exposeInMainWorld("pwr", {
node: () => {
const __dirname = path.resolve();
const child_argv = ["codegen", ""];
const child_execArgv = ["codegen"];
fork(__dirname + "/node_modules/playwright-core/cli.js", child_argv);
},
here is my client-side(renderer) code...
const handleClick = () => {
//@ts-ignore
pwr.node();
};
here is package.json
"scripts": {
"dev": "vite",
"build": "tsc && vite build && electron-builder"
},
and this is vite config file
rmSync(path.join(__dirname, 'dist'), { recursive: true, force: true }) // v14.14.0
// https://vitejs.dev/config/
export default defineConfig({
resolve: {
alias: {
'@': path.join(__dirname, 'src'),
'styles': path.join(__dirname, 'src/assets/styles'),
},
},
plugins: [
react(),
electron({
main: {
entry: 'electron/main/index.ts',
vite: {
build: {
// For Debug
sourcemap: true,
outDir: 'dist/electron/main',
},
// Will start Electron via VSCode Debug
plugins: [process.env.VSCODE_DEBUG ? onstart() : null],
},
},
preload: {
input: {
// You can configure multiple preload scripts here
index: path.join(__dirname, 'electron/preload/index.ts'),
},
vite: {
build: {
// For Debug
sourcemap: 'inline',
outDir: 'dist/electron/preload',
}
},
},
// Enables use of Node.js API in the Electron-Renderer
// https://github.com/electron-vite/vite-plugin-electron/tree/main/packages/electron-renderer#electron-renderervite-serve
renderer: {},
}),
],
server: process.env.VSCODE_DEBUG ? {
host: pkg.debug.env.VITE_DEV_SERVER_HOSTNAME,
port: pkg.debug.env.VITE_DEV_SERVER_PORT,
} : undefined,
})
Source Code: https://github.com/liansnail/electron-demo
Build Tool: Vite OS: mac arm64 node version: 16.14.2
Please let me know what I'm missing. I used Vite for
Edit: I turned off asar option but it still doesn't work.
"scripts": {
"dev": "vite",
"build": "tsc && vite build && electron-builder build --config.asar=false"
},