提问人:mr.sun 提问时间:2/6/2023 更新时间:11/11/2023 访问量:329
我无法正确安装 sql.js
I cannot install sql.js properly
问:
我正在尝试使用 sql.js 和 vanilla js 在客户端创建一个数据库。我想,安装过程中存在一些问题。我已经完成了“npm install sql.js”并包含了 CDN。我从控制台“Uncaught ReferenceError:require is not defined'
(顺便说一句,这是我的第一个问题,对建议持开放态度......
这几乎是他们网站上的文档中显示的表达式。不过,我无法让它工作。是因为 node.js 还是其他原因?
<script type="module">
const initSqlJs = require('/sql.js');
const SQL = await initSqlJs({
locateFile: (file) =>
'https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js',
});
const db = new SQL.Database();
let sqlstr =
"CREATE TABLE hello (a int, b char); \
INSERT INTO hello VALUES (0, 'hello'); \
INSERT INTO hello VALUES (1, 'world');";
db.run(sqlstr);
</script>
答:
0赞
mr.sun
2/7/2023
#1
考虑到您的评论,我做了一些研究。我应该使用 the 而不是,因为我不需要使用“web-assembly”。然而,他们的示例代码中有我仍然不明白的代码。修改它而不是使用解决了我的问题。sql-asm.js
sql-wasm.js
sql-wasm.js
require()
<meta charset="utf8" />
<html>
<script src="node_modules/sql.js/dist/sql-asm.js"></script>
<script>
config = {
locateFile: (filename) => `/dist/${filename}`,
};
// The `initSqlJs` function is globally provided by all of the main dist files if loaded in the browser.
// We must specify this locateFile function if we are loading a wasm file from anywhere other than the current html page's folder.
initSqlJs(config).then(function (SQL) {
//Create the database
const db = new SQL.Database();
// 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]);
// Prepare a statement
const stmt = db.prepare(
'SELECT * FROM test WHERE col1 BETWEEN $start AND $end'
);
stmt.getAsObject({ $start: 1, $end: 1 }); // {col1:1, col2:111}
// Bind new values
stmt.bind({ $start: 1, $end: 2 });
while (stmt.step()) {
//
const row = stmt.getAsObject();
console.log('Here is a row: ' + JSON.stringify(row));
}
});
</script>
<body>
Output is in Javascript console
</body>
</html>
-1赞
Rodrigo Sakae
11/11/2023
#2
“require”是指使用 Node。
当你使用原版JS时,你应该使用它,如github存储库中所述(第3行,注释)
const initSqlJs = window.initSqlJs;
评论
require()
是一个 NodeJS 构造。如果在客户端使用模块,则需要使用import