1.在.vue
文件中无法使用electronApi的问题
1.0版本
// 在src文件下新建 vue-electron.js文件
const electron = require('electron');
module.exports = {
install(Vue) {
Object.defineProperties(Vue.prototype, {
$electron: {
get () {
return electron
}
}
})
}
}
// 在main.js文件中引入
import VueElectron from './vue-electron'
Vue.use(VueElectron)
vue.config.js
配置防止浏览器报错'__dirname' is not defind
// 在项目根目录新建vue.config.js文件
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true
}
}
}
2.0
更简单的方法
// 在main.js中引入
import electron from 'electron'
Vue.prototype.$electron = electron;
vue.config.js
配置防止浏览器报错'__dirname' is not defind
// 在项目根目录新建vue.config.js文件
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true
}
}
}
此时应该可以在.vue
文件中访问到this.$electron
对象了,注意:一定要重启项目,vue.config.js配置的文件才能生效
2.在.vue
文件中使用this.$electron.remote
字段为undefined
需要“显”式的申明 enableRemoteModule: true
在项目目录src
下的background.js
中修改
// 添加前
const win = new BrowserWindow({
width: 400,
height: 400,
frame: false,
resizable: false,
webPreferences: {
// Use pluginOptions.nodeIntegration, leave this alone
// See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION
}
});
// 添加后
const win = new BrowserWindow({
width: 400,
height: 400,
frame: false,
resizable: false,
webPreferences: {
// Use pluginOptions.nodeIntegration, leave this alone
// See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
enableRemoteModule: process.env.ELECTRON_NODE_INTEGRATION
}
});
在vue.config.js
中添加
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true,
enableRemoteModule: true
}
}
}
此时应该可以在.vue
文件中访问到this.$electron.remote.XXX
任何electron主进程对象了,如:this.$electron.remote.BrowserWindow
网友评论