https://alligator.io/vuejs/using-new-vue-cli-3/
↑vue-cli3.0 で環境を構築しました
https://github.com/nklayman/vue-cli-plugin-electron-builder
↑エレクトロンビルダーを入れてデスクトップアプリ化しました
ブラウザでは正しく動いていたvuexがデスクトップアプリではうまく動きませんでした
typescript
1 2//store.ts 3 4import Vue from 'vue'; 5import Vuex from 'vuex'; 6 7Vue.use(Vuex); 8 9export default new Vuex.Store({ 10 state: { 11 myName: "二千花" 12 }, 13 mutations: { 14 'CHANGE_NAME'(state, newName) { 15 state.myName = newName 16 }, 17 }, 18 actions: { 19 'CHANGE_NAME'({ commit }, newName) { 20 if(newName != "名前変更"){ 21 commit('CHANGE_NAME', newName) 22 } 23 } 24 }, 25 getters:{ 26 'GET_MY_NAME': state => { return state.myName } 27 } 28}); 29
typescript
1 2//main.ts 3 4import Vue from 'vue'; 5import App from './App.vue'; 6import router from './router'; 7import store from './store'; 8 9Vue.config.productionTip = false; 10 11new Vue({ 12 router, 13 store, 14 render: (h) => h(App), 15}).$mount('#app'); 16
typescript
1 2//単一ファイルコンポーネント(.vue) 3 4<template> 5 <div class="createNew"> 6 <div class="vuexData"> 7 8 <span>vuexで共通しているデータ→</span> 9 10 <span>{{ getName() }}</span> 11 12 <input type="text" v-model="text"/> 13 14 <button @click="changeData">変更</button> 15 16 </div> 17 </div> 18</template> 19 20<script lang="ts"> 21import { Component, Vue } from 'vue-property-decorator'; 22 23@Component({ 24 components: { 25 }, 26}) 27export default class createNew extends Vue { 28 29 private text = "名前変更" 30 31 private getName(){ 32 return this.$store.getters.GET_MY_NAME 33 } 34 35 private changeData(){ 36 this.$store.dispatch("CHANGE_NAME", this.text); 37 } 38} 39</script> 40
最後の単一ファイルコンポーネントはrouter.tsの方に登録してあります
ブラウザでは上記コードでstoreにアクセス・変更などできていたのですが
npm run serve:electron
でデスクトップアプリを見ると
Cannot read property 'getters' of undefined"
などと言われてしまいます
typescript
1//main.ts 2 3global.vo = new Vue({ 4 router, 5 store, 6 render: (h) => h(App), 7}) 8 9vo.$mount('#app'); 10
typescript
1//単一ファイルコンポーネント(.vue) 2 3private getName(){ 4 return vo.$store.getters.GET_MY_NAME 5 //return "あ" 6 } 7 8 private changeData(){ 9 vo.$store.dispatch("CHANGE_NAME", this.text); 10 //alert("あ") 11 }
このようにするとちゃんと動くのですが、ストアにアクセスするたびに
[Vue warn]: $attrs is readonly.
というエラーが吐かれてしまいます
(エラーを吐くのですが動きます)
どのように解決すればいいでしょうか
教えてください(T_T)
--------------------追記--------------------
npm run serveで見ると、thisは$storeを持っているのに、electronでビルドするとthisはstoreを持っていません
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/14 02:43 編集
2018/06/14 15:09
退会済みユーザー
2018/06/15 02:35