electron sql.js Uncaught TypeError: must start with number, buffer, array or string

586 views Asked by At

I've created a little script with sql.js documentation, but i'm unable to write buffer into a.db (Win) console gives me error: "Uncaught TypeError: must start with number, buffer, array or string" is that something regarding "var data = db.export();" function or is there something wrong in my code?

var fs = require("fs");
var remote = require('remote');
var SQL = remote.require('sql.js');
var file = "a.db"
var exists = fs.existsSync(file);

if(!exists) {
console.log("DB creation: "+file+ "");
fs.openSync(file, "w");
}

var filebuffer = fs.readFileSync(file);

// Load the db
var db = new SQL.Database(filebuffer);
// Run a query without reading the results
db.run("CREATE TABLE test (col1, col2);");
// Insert two rows: (1,111) and (2,222)
db.run("INSERT INTO test VALUES (?,?), (?,?)", [1,111,2,222]);

var data = db.export();
var buffer = new Buffer(data);
fs.writeFileSync(file, buffer);
1

There are 1 answers

3
Vadim Macagon On BEST ANSWER
var SQL = remote.require('sql.js');

Why are you doing a remote require here? sql.js is not a built-in main-process module, so there's no reason you can't do a regular require('sql.js') in your renderer-process. You should be very careful about using the remote module, since serialization across process boundaries may have undesirable side-effects (which are documented in the API docs).