javascript 无法正确安装sql.js

ggazkfy8  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(187)

我尝试使用sql.js和vanilla js在客户端创建一个数据库。我猜,安装过程中出现了一些问题。我已经完成了“npm install sql.js”并包含了CDN。我从控制台收到此错误“Uncatch ReferenceError:未定义require'
(BTW这是我在这里的第一个问题,欢迎提出建议...)
这和他们网站上的文档中显示的表达式差不多,但是我不能让它工作,是因为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>

file tree

8zzbczxx

8zzbczxx1#

考虑到你的评论,我做了一些研究。我应该使用sql-asm.js而不是sql-wasm.js,因为我不需要使用“web-assembly”。然而,他们在示例代码中有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>

相关问题