本文详解alert()的适用场景与限制,指出其仅在浏览器环境有效,而Node.js中需改用console.log;同时澄清require('sqlite3')无法在浏览器运行,推荐使用IndexedDB替代方案。
本文详解`alert()`的适用场景与限制,指出其仅在浏览器环境有效,而node.js中需改用`console.log`;同时澄清`require('sqlite3')`无法在浏览器运行,推荐使用indexeddb替代方案。
在Web开发中,window.alert() 是一个常见的前端调试与用户交互工具,但它仅在浏览器环境中可用。你提供的代码试图在 Node.js 环境(如通过 VS Code 运行 .js 文件)中调用 window.alert(),这必然失败——因为 Node.js 没有 window 对象,也没有 DOM 环境。同理,require('sqlite3') 是 Node.js 专属模块,无法在浏览器中直接加载或执行,浏览器不支持 CommonJS 模块系统,也不内置 SQLite 驱动。
✅ 正确做法需按运行环境严格区分:
? 在 Node.js 中(如本地脚本、后端服务):
const sqlite3 = require('sqlite3').verbose();const db = new sqlite3.Database('./mybook.db', sqlite3.OPEN_READWRITE);const sql = 'SELECT option FROM beginner WHERE option = "verb to be";';db.all(sql, [], (err, rows) => { if (err) throw err; rows.forEach(row => console.log('Found:', row.option)); // ✅ 安全有效});db.close();
? 在浏览器中(前端页面):
// 示例:浏览器中使用 IndexedDB 查询(简化版)const request = indexedDB.open('MyBookDB', 1);request.onsuccess = function(event) { const db = event.target.result; const tx = db.transaction('beginner', 'readonly'); const store = tx.objectStore('beginner'); const req = store.index('option').get('verb to be'); req.onsuccess = () => { if (req.result) alert(req.result.option); // ✅ 仅在浏览器中有效 };};
⚠️ 注意事项: