尚未为NodeJ中的上下文错误加载模块名称“fs”

时间:2016-08-10 14:09:43

标签: node.js requirejs webstorm sql.js

我一直在尝试使用带有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([])

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

1 个答案:

答案 0 :(得分:0)

据我所知,您无法在前端使用fs来编写文件。但是,如果您正在尝试这样做,可以将变量存储在前端的本地存储中吗?

可以使用以下命令设置localStorage中的数据:

localStorage.setItem('nameForData', variableNameForData);

在需要时检索数据。

var variableNameForData = localStorage.getItem('nameForData')

从localStorage中删除数据:

localStorage.removeItem('nameForData')

Docs for local storage here.

编辑以回复评论

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

var fs = require('fs');

您正在加载包含在Node.JS

中的模块

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

There are docs here that explain how fs works.

正如我所说,如果你确实想在前端存储数据,本地存储就是这样做的一种方式。