【问题标题】:Cannot load wasm URL scheme file is not supported无法加载 wasm URL 方案文件不受支持
【发布时间】:2021-10-12 02:26:58
【问题描述】:

我正在尝试从这里学习如何使用 sql.js。 https://sql.js.org/#/

我正在关注第一个 html 示例,但我一直在尝试运行它时遇到错误。

我使用npm install sql.js安装了sql.js

我从 sql.js 安装中取出 dist 文件夹并将其放入 index.html 所在的 test 文件夹中。

我使用了示例代码并尝试在浏览器中打开它,但我遇到了:sql-wasm.js:167 Fetch API cannot load file:///C:/dist/sql-wasm.wasm. URL scheme "file" is not supported.

代码:

<meta charset="utf8" />
<html>
  <script src='C:\\Users\\Rocko\\Documents\\scripts\\AAOA\\nodetest\\dist\\sql-wasm.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>

图片:

我已经尝试让我的测试 webapp 读取我的 sqlite 文件大约 2 周了,我一直在尝试遵循人们的建议。这是最新的建议,所以我正在努力学习,但我什至无法完成基本示例。

任何想法都将不胜感激。

谢谢

【问题讨论】:

    标签: javascript sql sql.js


    【解决方案1】:

    您正在尝试从本地文件加载 WASM 文件,这不起作用。

    但是您可以轻松地在本地机器上启动一个网络服务器(通过使用例如 NodeJS),然后从那里运行您的测试代码,这样它就可以使用正确的 URL 而不是您 PC 上的本地文件来访问它。

    【讨论】:

    • 我下载了 sql.js,所以我不必使用 node.js。我不理解。我对此提出了多个问题,人们说要使用 sql.js,因为我无法在我的 Outlook 插件 Web 应用程序中使用 sql。所以我不明白为什么当我需要它在没有节点的网页上的浏览器中添加在 Outlook 中工作时,您为什么要向我提及使用节点?我觉得现在我必须再次提出另一个问题,才能弄清楚如何使用我的 Outlook 插件来读取我的 sqlite 文件。
    【解决方案2】:

    我在 sql.js 文档的同一页面后遇到了同样的错误。

    使用 sql-asm.js 代替 sql-wasm.js 可以避免该错误。正如文档在页面下方所说:“sql-asm.js Sql.js 的旧 asm.js 版本。速度较慢且较大。出于兼容性原因提供。

    这对我来说比启动 Web 服务器或尝试“将 wasm 编码为 base64”作为其他线程所建议的更可取(这超出了我的范围,而只是尝试创建一个简单的独立 .html 页面链接到一个 sqlite 文件)。

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多