0
我已經創建了一個帶有sql.js文檔的小腳本,但是我無法將緩衝區寫入a.db(Win) console給我錯誤:「未捕獲TypeError:必須以數字,緩衝區,數組或字符串開頭」 是關於「var data = db.export();」函數還是在我的代碼中有錯?electron sql.js未捕獲TypeError:必須以數字,緩衝區,數組或字符串開頭
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);
您好, 因爲sql.js的stdout錯誤我使用了遠程,但似乎不是正確的方式,所以我用sql-debug.js來代替,如果sql.js和我已經註釋掉了這些行和應用程序工作正常: 'if(ENVIRONMENT_IS_WEB && preloadStartTime!== null){ Module.printErr('pre-main prep time:'+(Date.now() - preloadStartTime)+'ms'); }' 當通過雙擊.exe文件(編譯版本)在窗口上執行應用程序時,由於在控制檯中寫入的行被觸發,該行不在Windows上,除非應用程序使用提示 –
你有沒有嘗試過'process.stdout.write = console.log.bind(console);'需要'sql.js'之前? –
@VadimMacagon我做過'process.stderr.write = console.error.bind(console); process.stdout.write = console.log.bind(console); var SQL = require('sql.js');' 它工作。 (我正在使用Electron。)感謝您的建議! – tjklemz