Ubuntu JS日志中常见的错误类型
Ubuntu JS日志中常见错误类型及解析
1. 语法错误(SyntaxError)
描述:代码中存在不符合JavaScript语法规则的结构(如缺少括号、引号、逗号,或使用了保留字作为变量名),导致引擎无法解析代码。
示例:console.log("Hello, world!"(缺少闭合括号)、let 123 = 456(变量名以数字开头)。
解决方法:仔细检查错误信息中提示的行号和位置,修正语法结构;可使用ESLint等代码质量工具提前发现语法问题。
2. 引用错误(ReferenceError)
描述:尝试访问未定义的变量、函数或对象属性(如拼写错误、变量未声明就使用)。
示例:console.log(undefinedVar)(变量未定义)、obj.undefinedMethod()(对象无该方法)。
解决方法:检查变量/函数名的拼写是否正确;确保变量在使用前已通过let、const或var声明;确认对象属性是否存在。
3. 类型错误(TypeError)
描述:对不兼容的数据类型执行操作(如将字符串当作函数调用、访问undefined对象的属性)。
示例:"hello"()(字符串不是函数)、undefinedVar.property(访问未定义变量的属性)、123 - "abc"(字符串与数字相减)。
解决方法:检查操作数的数据类型,确保符合操作要求;使用typeof或instanceof进行类型校验;对可能为undefined的值进行空值检查(如obj?.property)。
4. 范围错误(RangeError)
描述:数值超出有效范围(如数组长度为负数、toFixed()方法的参数超出0-20的范围)。
示例:let arr = new Array(-1)(数组长度不能为负)、num.toFixed(-1)(toFixed参数无效)。
解决方法:检查数值是否符合函数或对象的参数要求;调整数值到有效范围(如将负数长度改为0)。
5. 模块未找到错误(Cannot find module / Module not found)
描述:Node.js或打包工具(如Webpack)无法找到指定的模块(依赖未安装、路径错误)。
示例:Error: Cannot find module 'express'(未安装express模块)、Module not found: Can't resolve './utils' in '/app'(相对路径错误)。
解决方法:运行npm install module_name安装缺失的依赖;检查require/import语句中的路径是否正确(如./utils而非utils)。
6. 端口占用错误(EADDRINUSE)
描述:Node.js应用程序尝试监听的端口已被其他进程占用(常见于开发环境的3000、8080端口)。
示例:Error: listen EADDRINUSE: address already in use :::3000(3000端口被占用)。
解决方法:使用sudo lsof -i :3000查找占用端口的进程ID(PID),运行sudo kill -9 <
PID>
终止该进程;或修改应用程序的监听端口(如const port = 3001)。
7. 权限错误(EACCES)
描述:当前用户对文件或目录没有足够的访问权限(如读取、写入或执行)。
示例:EACCES: permission denied, access '/root/config.json'(无权限访问root目录下的文件)。
解决方法:修改文件/目录权限(如sudo chmod -R 755 /path/to/dir);或更改文件所有者(如sudo chown -R your_user:your_group /path/to/dir);避免使用root用户运行Node.js应用(推荐用普通用户+sudo仅用于必要操作)。
8. 异步未捕获错误(Unhandled Promise Rejection / Async Error)
描述:异步操作(如Promise、setTimeout、fetch)中抛出的错误未被catch捕获,导致程序崩溃。
示例:setTimeout(() =>
{
throw new Error("Async error") }
, 1000)(未捕获的异步错误)、fetch('invalid_url').then(res =>
res.json())(未捕获的网络错误)。
解决方法:为异步操作添加catch块(如fetch(url).then(...).catch(console.error));使用process.on('unhandledRejection', (err) =>
{
console.error('Unhandled rejection:', err);
}
)捕获全局未处理的Promise rejection。
9. 内存错误(MemoryError / Out of Memory)
描述:Node.js应用程序消耗的内存超过默认限制(通常为1.4GB-2GB,取决于系统),常见于内存泄漏或大量数据处理。
示例:FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory(堆内存溢出)、let arr = [];
while(true) {
arr.push(new Array(1000000)) }
(无限创建大数组)。
解决方法:优化代码以减少内存消耗(如分批处理数据、避免内存泄漏);增加Node.js内存限制(如node --max-old-space-size=4096 your_script.js,将内存限制提升至4GB)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu JS日志中常见的错误类型
本文地址: https://pptw.com/jishu/743727.html
