NativeScript Vue nativescript-sqlite 无法分配给“#<Object>”的只读属性“exports”对象

Posted

技术标签:

【中文标题】NativeScript Vue nativescript-sqlite 无法分配给“#<Object>”的只读属性“exports”对象【英文标题】:NativeScript Vue nativescript-sqlite cannot assign to read only property 'exports' object of '#<Object>' 【发布时间】:2019-06-13 19:21:49 【问题描述】:

我实际上是在尝试安装 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;

所以在最后一行中,我使用了导出...我错过了什么?

【问题讨论】:

你能分享一下 Github repo 中的示例项目吗? @Manoj 当然......我只是在几分钟前将它添加到 github。这里是。 [链接] (github.com/stahlie/vuex-project) 【参考方案1】:

当您在 main.js 文件中声明所有内容时,您实际上并不需要 module.exports = store;,至少它不会为您的应用程序/代码增加任何价值。

这个问题似乎是 webpack 的未解决问题,请查看 Github 问题以了解更多详细信息。

【讨论】:

这解决了问题。我已经看到了 webpack 的未解决问题,但没有看到任何地方可以删除 module.exports = store;直到你提到它。

以上是关于NativeScript Vue nativescript-sqlite 无法分配给“#<Object>”的只读属性“exports”对象的主要内容,如果未能解决你的问题,请参考以下文章

是啥让 nativescript 比 ionic 更好

NativeScript Sidekick - 需要 CLI(版本 5.1.1)

如何使用 Angular 在 NativeScript 中使用 XML 而不是 Html 进行设计?

如何更改 nativescript-vue 中的 RadDataForm 样式? (Nativescript-Vue)

如何在 Nativescript-Vue 中使用 nativescript-drawingpad?

无法在 nativescript vue 中导入 @nota/nativescript-webview-ext/vue