You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中sqlite3查询后window.alert无响应,console.log正常问题求助

问题解决思路
  • 核心问题:sqlite3是Node.js后端专属库,你的代码运行在Node环境中,不存在浏览器的window对象,所以typeof window !== "undefined"这个判断永远不成立,导致后续的alert代码根本没执行。
  • 为什么console.log正常?因为Node原生支持console.log输出到终端,但完全不支持浏览器端的window相关API。

修复方案

场景1:仅后端调试数据

直接用console.log替代alert,在Node终端查看结果:

const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./mybook.db', sqlite3.OPEN_READWRITE);

let sql = 'SELECT option FROM beginner where option = "verb to be";';

db.all(sql, [], (err, rows) => {
    if (err) {
        throw err;
    }
    rows.forEach((row) => {
        console.log(row.option); // 终端会输出查询结果
    });
});

场景2:在浏览器中展示数据

需要通过前后端分离的方式实现:后端提供接口返回数据,前端请求接口后调用alert。

后端(Node.js + Express)

const express = require('express');
const sqlite3 = require('sqlite3').verbose();
const app = express();
const port = 3000;

let db = new sqlite3.Database('./mybook.db', sqlite3.OPEN_READWRITE);

// 提供数据接口
app.get('/get-option', (req, res) => {
  let sql = 'SELECT option FROM beginner where option = "verb to be";';
  db.all(sql, [], (err, rows) => {
    if (err) {
      res.status(500).send(err.message);
      return;
    }
    res.json(rows);
  });
});

// 启动服务
app.listen(port, () => {
  console.log(`服务运行在 http://localhost:${port}`);
});

前端(HTML页面)

<!DOCTYPE html>
<html>
<body>
  <script>
    // 请求后端接口获取数据
    fetch('http://localhost:3000/get-option')
      .then(res => res.json())
      .then(rows => {
        rows.forEach(row => {
          alert(row.option); // 浏览器弹出结果
        });
      })
      .catch(err => console.error(err));
  </script>
</body>
</html>

内容的提问来源于stack exchange,提问作者mohamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:32:15