使用原生vue搭建electron常见报错

折腾了两天,尝试了electron-vue和electron-forge,效果都不怎么理想,electron-vue的electron版本太老,升级坑实在是太多,electron-forge版本不知道怎么更新,最后还是选择原生的vue框架来搭建,查了不少资料,解决了一部分问题

创建一个vue+electron项目

vue create app

一路回车下来

cd app
vue add electron-builder

修改electron-builder安装源

这里装了一晚上electron-builder都没成功,魔法上网和替换cache中的文件都试了一遍,安装的效果不是很满意,今天突然在csdn看到一个评论,完美解决

先修改npm的配置,也就是.npmrc这个文件

npm config edit

将下面两行加到文件中

electron_mirror=https://registry.npmmirror.com/mirrors/electron/
electron-builder-binaries_mirror=https://registry.npmmirror.com/mirrors/electron-builder-binaries/

之后就可以vue add electron-builder
在这里插入图片描述

这里还有个坑,可能会导致build失败

cannot move downloaded in to final location
在这里插入图片描述

进到path提示的路径中,把一串数字命名的文件夹再重命名为path中的名称即可

运行electron

npm run electron:serve

大概率是可以成功运行了

在这里插入图片描述

修改background配置

接下来的配置才是天坑,你会发现node的api在vue中支楞不起来,原因是electron禁止了在网页中操作node

在background.js中修改webPreferences中的nodeIntegration,原先的process.env.ELECTRON_NODE_INTEGRATION打印出来是false

  win = new BrowserWindow({ 
    width: 800, 
    height: 600, 
    webPreferences: {
      nodeIntegration: true //process.env.ELECTRON_NODE_INTEGRATION
  } })

依旧无法执行???

原因是electron暴露出来的api需要在函数前面加个window才可以运行

例:

const fs = window.require('fs');

可以在vue中对window解构

const { require } = window
const fs = require('fs')
console.log(fs.readdirSync('.'))

成功打印
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
根据您提供的引用内容,当您将`defineExpose`暴露的语法注释掉后,出现了报错信息"Cannot read properties of undefined (reading '__vccOpts') "。此错误可能是由于在使用`defineProps`时出现问题。`defineProps`是Vue 3中用于定义父组件传递给子组件的属性的方法。在使用`defineProps`时,需要确保您正确地导入和使用Vue的`defineProps`函数,并且在组件的`props`选项中定义属性。请检查您的代码,确保正确使用了`defineProps`并定义了正确的属性。 另外,根据引用的信息,Vue 3.2版本之后,您还可以使用语法糖来简化`setup`中使用`defineExpose`的方式。只需在`script`标签上添加`setup`属性,并在其中直接定义和暴露您需要访问的函数或数据即可,无需使用`defineExpose`函数进行暴露。请根据您所使用Vue版本和语法规范进行相应的调整。 综上所述,要解决vue3使用`defineProps`报错的问题,请确保正确导入和使用`defineProps`函数,并在组件的`props`选项中定义属性。如果您使用的是Vue 3.2版本及以上,您还可以尝试使用语法糖来简化`setup`中对函数或数据的使用和暴露。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue3报错:‘defineProps‘ is not defined,‘defineExpose‘ is not defined。](https://blog.csdn.net/weixin_56728548/article/details/125366388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue2 + webpack5相适配的 能成功打包的 package.json 文件](https://download.csdn.net/download/weixin_43405300/88252148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值