1

我一直在尝试sql.js使用 WebStorm 与 NodeJs 一起使用。我在 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([])

如何解决该错误并成功运行此完整代码?

4

1 回答 1

2

据我所知,您不能fs在前端使用来编写文件。但是,如果这是您想要做的,您可以将变量存储在前端的本地存储中吗?

可以通过以下命令设置 localStorage 中的数据:

localStorage.setItem('nameForData', variableNameForData);

在需要时检索数据。

var variableNameForData = localStorage.getItem('nameForData')

从 localStorage 中删除数据:

localStorage.removeItem('nameForData')

本地存储的文档在这里。

编辑以回答评论

fs用于访问代码正在运行的本地机器上节点中的文件系统。使用命令:

var fs = require('fs');

您正在加载一个包含在 Node.JS 中的模块

出于安全原因,这在浏览器中不起作用。

这里有解释如何fs工作的文档。

正如我所建议的,如果您确实想在前端存储数据,本地存储是一种方法。

于 2016-08-10T14:16:15.917 回答