0

我用 sql.js 文档创建了一个小脚本,但我无法将缓冲区写入 a.db(Win)控制台给我错误:“未捕获的 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);
4

1 回答 1

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

你为什么在这里做一个远程要求?sql.js不是内置的主进程模块,因此没有理由不能require('sql.js')在渲染器进程中执行常规操作。您应该非常小心地使用该remote模块,因为跨进程边界的序列化可能会产生不良的副作用(在API 文档中有记录)。

于 2016-01-27T06:07:05.307 回答