我一直在尝试使用带有NodeJs的sql.js
来使用WebStorm。我在WebStorm中配置了NodeJ并尝试运行此代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Database Test</title>
<script src="js/require.js"></script>
<script src="js/sql.js"></script>
</head>
<body>
<script>
var fs = require('fs');
var sql = window.SQL;
var db = new sql.Database();
sqlstr = "CREATE TABLE hello (a int, b char);";
sqlstr += "INSERT INTO hello VALUES (0, 'hello');"
sqlstr += "INSERT INTO hello VALUES (1, 'world');"
db.run(sqlstr);
var res = db.exec("SELECT * FROM hello");
var stmt = db.prepare("SELECT * FROM hello WHERE a=:aval AND b=:bval");
var result = stmt.getAsObject({':aval' : 1, ':bval' : 'world'});
console.log(result);
stmt.bind([0, 'hello']);
while (stmt.step()) console.log(stmt.get());
function add(a, b) {return a+b;}
db.create_function("add_js", add);
db.run("INSERT INTO hello VALUES (add_js(7, 3), add_js('Hello ', 'world'));");
stmt.free();
var binaryArray = db.export();
var buffer = new Buffer(binaryArray);
fs.writeFileSync("filename.sqlite", buffer);
</script>
</body>
</html>
但是代码在控制台中给我一个错误
Uncaught Error: Module name "fs" has not been loaded yet for context: _. Use require([])
如何解决该错误并成功运行此完整代码?
答案 0 :(得分:0)
据我所知,您无法在前端使用fs
来编写文件。但是,如果您正在尝试这样做,可以将变量存储在前端的本地存储中吗?
可以使用以下命令设置localStorage中的数据:
localStorage.setItem('nameForData', variableNameForData);
在需要时检索数据。
var variableNameForData = localStorage.getItem('nameForData')
从localStorage中删除数据:
localStorage.removeItem('nameForData')
编辑以回复评论
fs
用于访问运行代码的本地计算机上的节点中的文件系统。使用命令:
var fs = require('fs');
您正在加载包含在Node.JS
中的模块出于安全原因,这在浏览器中不起作用。
There are docs here that explain how fs
works.
正如我所说,如果你确实想在前端存储数据,本地存储就是这样做的一种方式。