electron sql.js Uncaught TypeError:必须以数字,缓冲区,数组或字符串开头

时间:2016-01-25 17:30:27

标签: node.js buffer electron sql.js

我用sql.js文档创建了一个小脚本,但是我无法将缓冲区写入a.db(Win) console给了我错误:" Uncaught TypeError:必须以数字,缓冲区,数组或字符串"开头。 是关于" var data = db.export();"功能还是我的代码有问题?

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 个答案:

答案 0 :(得分:0)

var SQL = remote.require('sql.js');

你为什么要在这里做远程需求? sql.js不是内置的主进程模块,因此您无法在渲染器进程中执行常规require('sql.js')。您应该非常小心使用remote模块,因为跨流程边界的序列化可能会产生不良副作用(API docs中记录了这些副作用)。