我用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);
答案 0 :(得分:0)
var SQL = remote.require('sql.js');
你为什么要在这里做远程需求? sql.js
不是内置的主进程模块,因此您无法在渲染器进程中执行常规require('sql.js')
。您应该非常小心使用remote
模块,因为跨流程边界的序列化可能会产生不良副作用(API docs中记录了这些副作用)。