提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
【electron+vue】手把手教如何调用外部exe
- 一、安装
- 二、执行
- 1.指定路径
- 2.相对路径
- 三、问题
一、安装
安装nodejs中的child_process nodejs v16
npm install child_process
返回报错:PS F:\vue\my-project0830-electron> npm install child_process
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward. There is no API change, just a package name change
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated electron-osx-sign@0.5.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm ERR! code 1
npm ERR! at ClientRequest.<anonymous> (F:\vue\my-project0830-electron\node_modules\got\source\request-as-event-emitter.js:178:14)
这里显示warn and ERR,怀疑是因为我之前添加了 electron-builder 导致安装失败
electron-builder 安装参考
重新安装,cnpm 这里借用了淘宝镜像
PS :> cnpm install child_process
√ Linked 1 latest versions fallback to F:\vue\my-project0830-electron\node_modules\.store\node_modules
√ Installed 1 packages on F:\vue\my-project0830-electron
√ All packages installed (1 packages installed from npm registry, used 6s(network 6s), speed 175.98B/s, json 1(403B), tarball 580B, manifests cache hit 0, etag hit 0 / miss 0)
dependencies:
+ child_process ^1.0.2
二、执行
参考博客electron项目中调用第三方exe应用
建议需要执行的exe不要放在带有空格的路径中
1.指定路径
我在vue electron项目中的xxx.vue
中调用,功能实现,点击按键运行exe
<template>
<el-button class="Button" @click="Button"
type="primary" size="medium"
style="">
开始检查
</el-button>
</template>
<script>
export default{
data(){},
methods:
{
Button()
{
require('child_process').exec('start F:\\vue\\print_txt.exe')
},
}
}
</script>
2.相对路径
参考博客【electron-vue+python】electron启动调用python打包的exe
methods:{
checkButton() {
const { spawn } = require('child_process')
const child = spawn('print_txt.exe')
child.on('error',(err) => {
console.log('err => ',err)
})
},
}
我把代码放在了methods()里
现象:点击按钮运行exe程序,同时在工程路径下生成了txt。
三、问题
调用exe的时候会刷新界面,本来是想执行exe后,自动调取产生的txt文件,并将txt文件内容显示在界面上的。
后续:刷新界面的原因是因为,本人在VS code环建下编写,执行exe后在工程目录下生成文件,工程目录下生成文件会导致VS code 重新编译,导致界面刷新,之后把界面生成exe后,再继续跟进