vue + electron 如何将文件写入磁盘

2022-01-10 00:00:00 electron vue.js vuex

我正在使用 Vue 和 Electron 构建一个桌面应用程序.我想从一个 vue 组件中保存一个文件,其中包含用户介绍的一些数据.为此,我尝试在 vuex 操作中使用 fs 节点模块,但它让我出错.找不到那个模块.我知道 Vue 是客户端,但是,我认为在与 Electron 一起使用时它可以工作,但事实并非如此.为了初始化我的应用程序,我使用了 vue-cli 和命令 vue init webpack electron-vue.我正在使用 vuex 系统和 vuex 模块,我有一个 actions.js 文件,我尝试使用 fs 模块:

I'm building a desktop app using Vue and Electron. I want to save a file from a vue component with some data introduced by the user. For doing that, I tried used fs node module inside an vuex action, but it got me error. Can't found that module. I know Vue is client side, but, I thought that at the moment of using with Electron it could work, but it does't. To init my app I used vue-cli and the command vue init webpack electron-vue. I'm using vuex system and using vuex modules too, I've an actions.js file where I tried to use the fs module:

// import * as fs from 'fs'; I used this way at first
const fs = require('fs');
export const writeToFile = ({commit}) => {
 fs.writeFileSync('/path/file.json', JSON.stringify(someObjectHere));
};

当我从 Vue 组件(例如 Options.vue)调用此操作时,我使用 vuex 调度系统,并且在该组件的 created() 方法中:

When I call this action from a Vue component, ex, Options.vue, I use the vuex dispatch system, and, in the created() method of that component:

this.$store.dispatch('writeToFile')

这引起了我上面提到的错误

That's raised me the error above mentioned

推荐答案

要在electron中使用文件系统与Vue和WebPack,文件系统实例必须在执行命令npm run"后在dist/index.html中声明构建"

to use File System in electron with Vue and WebPack, the file system instance has to be declared in the dist/index.html after execute the command "npm run build"

<script>
    var fs = require('fs');
</script>

在 vue 组件中,它使用 fs 就像在 vue 文件中声明一样.

and in the vue component, it 's used fs like if it would have been declared in the vue file.

...
export const writeToFile = ({commit}) => {
    fs.writeFileSync('/path/file.json', SON.stringify(someObjectHere))
};
...

如果不在 electron 中使用,或者将其写入 dev 的索引中,则会引发错误.

while if not use it in electron or you write it in the index to dev, it throws an error.

相关文章