前端常见错误

news2025/6/6 13:17:15

1. TypeError: Cannot read property 'xxx' of undefined

错误原因:尝试访问一个 undefined 或 null 对象的属性 / 方法。
示例代码

const user = { name: "John" };
console.log(user.address.street); // user.address 为 undefined

解决方案

  • 使用可选链操作符(?.):user.address?.street
  • 添加条件检查:if (user.address) { ... }
  • 使用默认值:const street = user.address?.street || "Unknown";

2. ReferenceError: xxx is not defined

错误原因:引用了一个未定义的变量、函数或模块。
示例代码

console.log(myVariable); // 变量未声明

解决方案

  • 检查变量名拼写是否正确
  • 确认变量是否在当前作用域内(避免闭包陷阱)
  • 确保依赖的模块已正确导入:import { myFunction } from './module';

3. TypeError: xxx is not a function

错误原因:尝试调用一个非函数类型的变量。
示例代码

const myObject = { name: "John" };
myObject.sayHello(); // myObject.sayHello 不是函数

解决方案

  • 确认函数名拼写是否正确
  • 检查函数是否被正确赋值:const sayHello = () => { ... }
  • 避免覆盖内置函数:console.log();

4. SyntaxError: Unexpected token

错误原因:代码中存在语法错误(如括号未闭合、缺少分号、引号不匹配)。
示例代码

if (true { console.log("Hello"); } // 缺少右括号

解决方案

  • 检查报错行及前后的代码
  • 使用代码格式化工具(如 Prettier)自动修复
  • 注意 JSX/TSX 中的尖括号与 HTML 标签的区别

5. RangeError: Maximum call stack size exceeded

错误原因:递归函数没有终止条件,导致无限循环调用。
示例代码

function countdown(n) {
  return countdown(n - 1); // 缺少终止条件
}
countdown(10);

解决方案

  • 添加终止条件:if (n <= 0) return;
  • 使用迭代(循环)替代递归

6. Promise rejection without a catch block

错误原因:Promise 被拒绝(rejected)但没有 .catch() 处理。
示例代码

fetchData().then(data => { ... }); // 没有处理错误的情况

解决方案

  • 添加 .catch() 块:fetchData().then(...).catch(error => { ... })
  • 使用 async/await 和 try/catch
async function loadData() {
  try {
    const data = await fetchData();
  } catch (error) {
    console.error(error);
  }
}

7. NetworkError: Failed to fetch

错误原因:网络请求失败(如跨域问题、服务器未响应、URL 错误)。
示例代码

fetch("https://api.example.com/data")
  .then(response => response.json())
  .catch(error => console.error("Fetch error:", error));

解决方案

  • 检查 URL 是否正确
  • 确认服务器是否正常运行
  • 处理 CORS 问题
  • 添加超时处理:AbortController

8. Module not found: Error: Can't resolve 'xxx'

错误原因:在打包或编译时找不到指定的模块。
解决方案

  • 确认模块是否已安装:npm install xxx
  • 检查导入路径是否正确:import MyComponent from './components/MyComponent';
  • 检查 package.json 中的依赖配置

9. TypeError: this is undefined

错误原因:在类方法或回调函数中,this 指向意外对象。
示例代码

class MyClass {
  constructor() {
    this.name = "MyClass";
  }
  greet() {
    setTimeout(function() {
      console.log(this.name); // this 指向 window 而非 MyClass 实例
    }, 1000);
  }
}

解决方案

  • 使用箭头函数保留上下文:setTimeout(() => { ... }, 1000)
  • 手动绑定 thisthis.greet = this.greet.bind(this)

10. DOMException: Failed to execute 'appendChild' on 'Node'

错误原因:尝试将无效的节点添加到 DOM 中(如 null 或重复添加同一节点)。
解决方案

  • 确保节点已正确创建:const element = document.createElement('div');
  • 避免重复添加:if (!parent.contains(child)) { parent.appendChild(child); }

总结建议

  1. 善用调试工具:Chrome DevTools 的断点调试、错误堆栈追踪。
  2. 阅读错误信息:错误提示中的行号、文件名和上下文很关键。
  3. 逐步排查:缩小问题范围,隔离出错代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2401695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

吴恩达MCP课程(5):mcp_chatbot_prompt_resource.py

前提条件&#xff1a; 1、吴恩达MCP课程&#xff08;5&#xff09;&#xff1a;research_server_prompt_resource.py 2、server_config_prompt_resource.json文件 {"mcpServers": {"filesystem": {"command": "npx","args"…

设计模式——抽象工厂设计模式(创建型)

摘要 抽象工厂设计模式是一种创建型设计模式&#xff0c;旨在提供一个接口&#xff0c;用于创建一系列相关或依赖的对象&#xff0c;无需指定具体类。它通过抽象工厂、具体工厂、抽象产品和具体产品等组件构建&#xff0c;相比工厂方法模式&#xff0c;能创建一个产品族。该模…

基于LocalAI与cpolar技术协同的本地化AI模型部署与远程访问方案解析

文章目录 前言1. Docker部署2. 简单使用演示3. 安装cpolar内网穿透4. 配置公网地址5. 配置固定公网地址前言 各位极客朋友们!今天要向大家推荐一套创新性的本地部署方案——LocalAI技术架构。这款开源工具包能够将普通配置的笔记本电脑转化为具备强大算力的AI工作站,轻松实现…

霍尔效应传感器的革新突破:铟化铟晶体与结构演进驱动汽车点火系统升级

一、半导体材料革新&#xff1a;铟化铟晶体的电压放大机制 铟化铟&#xff08;InSb&#xff09;晶体因其独特的能带结构&#xff0c;成为提升霍尔电压的关键材料。相较于传统硅基材料&#xff0c;其载流子迁移率高出3-5倍&#xff0c;在相同磁场强度下可显著放大霍尔电压。其作…

无法运用pytorch环境、改环境路径、隔离环境

一.未建虚拟环境时 1.创建新项目后&#xff0c;直接运行是这样的。 2.设置中Virtualenv找不到pytorch环境&#xff1f;因为此时没有创建新虚拟环境。 3.选择conda环境&#xff08;全局环境&#xff09;时&#xff0c;是可以下载环境的。 运行结果如下&#xff1a; 是全局环境…

从0开始学vue:pnpm怎么安装

一、什么是 pnpm&#xff1f; pnpm&#xff08;Performant npm&#xff09;是新一代 JavaScript 包管理器&#xff0c;优势包括&#xff1a; 节省磁盘空间&#xff1a;通过硬链接和符号链接实现高效存储安装速度更快&#xff1a;比 npm/yarn 快 2-3 倍内置工作区支持&#xf…

Python 网络编程 -- WebSocket编程

作者主要是为了用python构建实时网络通信程序。 概念性的东西越简单越好理解,因此,下面我从晚上摘抄的概念 我的理解。 什么是网络通信? 更确切地说&#xff0c;网络通信是两台计算机上的两个进程之间的通信。比如&#xff0c;浏览器进程和新浪服务器上的某个Web服务进程在通…

边缘计算应用实践心得

当数据中心的光纤开始承载不了爆炸式增长的物联网数据流时&#xff0c;边缘计算就像毛细血管般渗透进现代数字肌理的末梢。这种将算力下沉到数据源头的技术范式&#xff0c;本质上是对传统云计算中心化架构的叛逆与补充——在智能制造车间里&#xff0c;实时质检算法直接在工业…

EXCEL如何快速批量给两字姓名中间加空格

EXCEL如何快速批量给姓名中间加空格 优点&#xff1a;不会导致排版混乱 缺点&#xff1a;无法输出在原有单元格上&#xff0c;若需要保留原始数据&#xff0c;可将公式结果复制后“选择性粘贴为值” 使用场景&#xff1a;在EXCEL中想要快速批量给两字姓名中间加入空格使姓名对…

Jenkins | Linux环境部署Jenkins与部署java项目

1. 部署jenkins 1.1 下载war包 依赖环境 jdk 11 下载地址: https://www.jenkins.io/ 依赖环境 1.2 启动服务 启动命令 需要注意使用jdk11以上的版本 直接启动 # httpPort 指定端口 #-Xms2048m -Xmx4096m 指定java 堆内存初始大小 与最大大小 /usr/java/jdk17/bin/java…

react私有样式处理

react私有样式处理 Nav.jsx Menu.jsx vue中通过scoped来实现样式私有化。加上scoped&#xff0c;就属于当前组件的私有样式。 给视图中的元素都加了一个属性data-v-xxx&#xff0c;然后给这些样式都加上属性选择器。&#xff08;deep就是不加属性也不加属性选择器&#xff09; …

UDP/TCP协议全解

目录 一. UDP协议 1.UDP协议概念 2.UDP数据报格式 3.UDP协议差错控制 二. TCP协议 1.TCP协议概念 2.三次握手与四次挥手 3.TCP报文段格式&#xff08;重点&#xff09; 4.流量控制 5.拥塞控制 一. UDP协议 1.UDP协议概念 当应用层的进程1要向进程2传输报文&#xff…

Duix.HeyGem:以“离线+开源”重构数字人创作生态

在AI技术快速演进的今天,虚拟数字人正从高成本、高门槛的专业领域走向大众化应用。Duix.HeyGem 数字人项目正是这一趋势下的杰出代表。该项目由一支拥有七年AI研发经验的团队打造,通过放弃传统3D建模路径,转向真人视频驱动的AI训练模型,成功实现了低成本、高质量、本地化的…

ubuntu22.04安装megaton

前置 sudo apt-get install git cmake ninja-build generate-ninja安装devkitPro https://blog.csdn.net/qq_39942341/article/details/148388639?spm1001.2014.3001.5502 安装cargo https://blog.csdn.net/qq_39942341/article/details/148387783?spm1001.2014.3001.5501 …

Windows应用-GUID工具

下载本应用 我们在DirectShow和媒体基础程序的调试中&#xff0c;将会遇到大量的GUID&#xff0c;调试窗口大部分情况下只给出GUID字符串&#xff0c;此GUID代表什么&#xff0c;我们无从得知。这时&#xff0c;就需要此“GUID工具”&#xff0c;将GUID字符串翻译为GUID定义&am…

vue+element-ui一个页面有多个子组件组成。子组件里面有各种表单,实现点击enter实现跳转到下一个表单元素的功能。

一个父组件里面是有各个子组件的form表单组成的。 我想实现点击enter。焦点直接跳转到下一个表单元素。 父组件就是由各个子组件构成 子组件就像下图一样的都有个el-form的表单。 enterToTab.js let enterToTab {}; (function() {// 返回随机数enterToTab.addEnterListener …

Vehicle HAL(5)--vhal 实现设置属性的流程

目录 1. ard11 vhal 设置属性的时序图 CarService > vhal > CarService 2. EmulatedVehicleHal::set(xxx) 的实现 本文介绍ard11的vhal属性设置流程图。 1. ard11 vhal 设置属性的时序图 CarService > vhal > CarService 2. EmulatedVehicleHal::set(xxx) 的实现…

WebRTC中的几个Rtp*Sender

一、问题&#xff1a; webrtc当中有几个比较相似的类&#xff0c;看着都是发送RTP数据包的&#xff0c;分别是&#xff1a;RtpPacketToSend 和RtpSenderVideo还有RtpVideoSender以及RTPSender&#xff0c;这说明什么呢&#xff1f;首先&#xff0c;说明我会很多连词&#xff0…

代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结

150. 逆波兰表达式求值--后缀表达式 力扣题目链接(opens new window) 根据 逆波兰表示法&#xff0c;求表达式的值。 有效的运算符包括 , - , * , / 。每个运算对象可以是整数&#xff0c;也可以是另一个逆波兰表达式。 说明&#xff1a; 整数除法只保留整数部分。 给…

IDEA202403 设置主题和护眼色

文章目录 背景一、设置主题二、设置背景豆沙绿三、设置控制台颜色 背景 在用IDEA进行开发时&#xff0c;长时间对着屏幕&#xff0c;不费眼是及其重要 一、设置主题 默认的主题是 Dark 暗黑&#xff0c;可更改为其他&#xff0c;如Light 高亮 位置&#xff1a;编辑栏【files…