Web SQL查询函数getUser未定义报错求助
解决Uncaught ReferenceError: getUser is not defined的问题
你遇到的这个报错本质是:当页面执行getUser()调用时,sql.js里的getUser函数还没有被浏览器加载和解析,或者JS文件本身加载失败了。我帮你一步步排查和修复:
1. 先确认JS文件路径是否正确
打开浏览器开发者工具(按F12),切换到Network标签页,刷新页面后查看js/sql.js的请求状态:
- 如果状态码是404:说明文件路径写错了。比如你的HTML文件如果在根目录,要确保
js文件夹确实存在,且里面有sql.js文件。 - 如果状态码是200:说明文件加载成功,继续往下排查。
2. 规范script标签的写法
你当前引入JS的标签里有多余的换行和空白内容,虽然大部分浏览器兼容,但可能导致加载异常。改成标准写法:
<script type="text/javascript" src="js/sql.js"></script> <script type="text/javascript" src="js/dom.js"></script>
(language="javascript"属性现在已冗余,现代浏览器无需声明)
3. 调整函数调用时机(核心修复)
你现在在<main>里直接调用getUser(),这时候浏览器可能还没完成sql.js的解析工作。最稳妥的方式是等待页面所有资源加载完成后再执行调用,可以用DOMContentLoaded事件或者window.onload:
把你<main>里的代码改成:
<script type="text/javascript"> window.addEventListener('DOMContentLoaded', function() { try { getUser(); } catch(err) { alert(err.message); } }); </script>
或者把这段调用代码放到</body>标签的上方(页面最底部),这样所有JS文件都已经加载解析完毕,肯定能找到函数。
4. 检查JS文件是否有语法错误
如果sql.js里存在语法错误,会导致整个文件解析失败,函数无法被定义。打开控制台的Console标签,看看有没有来自sql.js的语法报错。从你提供的代码来看,暂时没发现明显语法问题,但可以再检查一遍括号、分号是否闭合。
验证方法
如果以上步骤做完还是有问题,你可以在控制台手动输入getUser:
- 如果返回
undefined:说明函数确实没被加载,回到第一步检查路径和JS文件。 - 如果返回函数体:说明是调用时机的问题,确认事件绑定是否正确。
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

