Closed ChunAllen closed 5 years ago
It works fine for me with the same code. Can you please create a sample repository that reproduces the issue and share it with me?
It's working already I tried adding this in background.js
win = new BrowserWindow({ width: 1040,
height: 1900,
fullscreen: true,
webPreferences: { preload: __static + '/preload.js' }
})
then the preload.js
const remote = require("electron").remote;
window.restartApp = function() {
console.log('Restarting');
remote.app.relaunch()
remote.app.exit(0);
};
I can now call the restartApp()
inside the method in Vue component.
But I think this is not an optimal solution because I'm adding the logic inside the public/
Any ideas how to make it more secured? or Why import { remote } from 'electron';
not being accessible in the first place.
got the same issue, any progress on this?
Importing electron in a vue component works fine for me. Please create an example repo with the bug.
possibly related to this https://github.com/nklayman/vue-cli-plugin-electron-builder/blob/v2/docs/guide/configuration.md#node-integration i encountered same issue, and fixed it through that guide.
possibly related to this https://github.com/nklayman/vue-cli-plugin-electron-builder/blob/v2/docs/guide/configuration.md#node-integration i encountered same issue, and fixed it through that guide.
Thanks a lot! I've been struggling for days and days.
@nklayman May I ask why setting nodeIntegration in background.ts alone is not taking effect?
win = new BrowserWindow({
webPreferences: {
nodeIntegration: true
}
});
@march1993 It also has to adjust the webpack config to allow for native modules.
I’m facing the same error i.e fs.existsSync is not a function. I’ve tried everything and doesn’t work for me. I’ve got this error while importing or requiring the electron in vue component. Please help. @nklayman
//vue.config.js
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true,
},
},
css: {
loaderOptions: {
sass: {
prependData: '@import "@/styles/_variables.scss"; ',
},
},
},
};
// CreateNewNote.vue
<script>
const { ipcRenderer } = require('electron');
export default {
methods: {
createNote() {
ipcRenderer.send('createNewNote', 'This text is from renderer to background');
};
</script>
Still I get the same error. What else I'll do to get rid of this error.
@and-ocean2017 I don't think it will help, but try import { ipcRenderer } from 'electron
instead of what you have currently. There is a chance it might fix it.
Thanks, @nklayman I was trying running the electron application in dev mode i.e in the browser using (npm run serve) and obviously browser doesn't find the electron API in dev server, that's why I was getting that error. Then I took a closer look and solved this to run my application as (npm run electron:serve) i.e Compiles and hot-reloads for development. IF SOMEONE COULDN'T FIND THE SOLUTION TILL NOW SO TRY TO RUN APPLICATION USING (npm run electron:serve) or build using (npm run electron:build) .
It wasn't until I added nodeIntegration: true
that my npm run serve
broke. Does anyone know how to setup the project so you can run/build conditionally with the Electron API dependencies?
I had the same problem too, I made arrangements as below, it worked.
electron main.js
win = new BrowserWindow({
width: 1360,
height: 768,
webPreferences: {
nodeIntegration: true,
nodeIntegrationInWorker: true
}
vue.config.js
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true
}
}
//...
}
for me helped:
package.json (up version, read more https://www.npmjs.com/package/electron-store)
"electron-store": "^6.0.1",
vue.config.js
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true, // <--- added
}
}
//...
}
electron main.js
win = new BrowserWindow({
width: 1360,
height: 768,
webPreferences: {
enableRemoteModule: true, // <--- added
nodeIntegration: true,
}
As @MaviTm and @AndreiSoroka pointed out, doing those configurations worked for me.
In my case, I did:
On vue.config.js
:
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true,
},
},
};
On background.js
's createWindow
function:
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
nodeIntegrationInWorker: true,
},
});
With that done, I could use the ipcRenderer
as a module on a Vuejs SFC Component, as @nklayman sugested:
<script>
import { ipcRenderer } from "electron";
export default {
name: "Home",
methods: {
start() {
ipcRenderer.send("open", { msg: "Go!" });
},
},
};
</script>
And at last, but not least, as @and-ocean2017 said, should run the Electron Serve
script, with npm run electron:serve
or yarn electron:serve
.
Thanks for the help guys :smile: !
Describe the bug I'm getting
fs.existsSync is not a function
when I'm importing electron in my component. This is similar to #335 but the solution is not working for me.To Reproduce
Expected behavior I should be able to relaunch the app by accessing the methods in my component.
Screenshots
Environment (please complete the following information):