NativeScript Vue nativescript-sqlite не может назначить только для чтения свойство 'exports' объекта '# <Object>' - PullRequest
0 голосов
/ 20 января 2019

Я действительно пытался установить vuex-project и реализовать код из https://www.nativescript.org/blog/data-management-with-sqlite-and-vuex-in-a-nativescript-vue-app, за исключением того, что я получил только / app вместо / src ... В любом случае, я получил следующую ошибку

TypeError: cannot assign to read only property of object '#<Object>'

в main.js

import Vue from 'nativescript-vue'
import Vuex from 'vuex'
import App from './components/App'
import VueDevtools from 'nativescript-vue-devtools'

if(TNS_ENV !== 'production') {
  Vue.use(VueDevtools)
}
// Prints Vue logs when --env.production is *NOT* set while building
Vue.config.silent = (TNS_ENV === 'production')

const Sqlite = require("nativescript-sqlite");

Vue.use(Vuex);

const store = new Vuex.Store({
    state: {
        database: null,
        data: []
    },
    mutations: {
      init(state, data) {
        state.database = data.database;
      },
      load(state, data) {
        state.data = [];
        for(var i = 0; i < data.data.length; i++) {
            state.data.push({
                firstname: data.data[i][0],
                lastname: data.data[i][1]
            });
        }
      },
      save(state, data) {
        state.data.push({
            firstname: data.data.firstname,
            lastname: data.data.lastname
        });
      },
     },
    actions: {
      init(context) {
        (new Sqlite("my.db")).then(db => {
            db.execSQL("CREATE TABLE IF NOT EXISTS people (id INTEGER     PRIMARY KEY AUTOINCREMENT, firstname TEXT, lastname TEXT)").then(id => {
            context.commit("init", { database: db });
        }, error => {
            console.log("CREATE TABLE ERROR", error);
        });
    }, error => {
        console.log("OPEN DB ERROR", error);
    });
},
insert(context, data) {
    context.state.database.execSQL("INSERT INTO people (firstname, lastname) VALUES (?, ?)", [data.firstname, data.lastname]).then(id => {
        context.commit("save", { data: data });
    }, error => {
        console.log("INSERT ERROR", error);
    });
},
query(context) {
    context.state.database.all("SELECT firstname, lastname FROM people", []).then(result => {
        context.commit("load", { data: result });
    }, error => {
        console.log("SELECT ERROR", error);
    });
}
 }
});

Vue.prototype.$store = store;

module.exports = store;

Итак, в последней строке я использовал экспорт ... что мне не хватает?

1 Ответ

0 голосов
/ 20 января 2019

Вам действительно не нужно module.exports = store;, когда вы объявили все в файле main.js, по крайней мере это не добавляет никакого значения вашему приложению / коду.

Эта проблема, кажется,открытый выпуск с webpack , за дополнительной информацией обращайтесь к выпуску Github.

...