0:0 error Parsing error: Cannot read properties of undefined (reading ‘map‘)
遇到一个报错信息如下:
当前组件的第一行爆红提示以及保存后,终端提示为:
0:0 error Parsing error: Cannot read properties of undefined (reading 'map')
使用该组件的位置提示:
8:29 error Parse errors in imported module '../xxx': Cannot read properties of undefined (reading 'map') (undefined:undefined) import/no-named-as-default
8:29 error Parse errors in imported module '../xxx': Cannot read properties of undefined (reading 'map') (undefined:undefined) import/no-named-as-default-member
第一反应是检查代码内部所有 .map 之前的数据是否为 undefined。
但发现都做了兜底处理(类似于):
{(companyDataList.value || [])?.map((company) => (<ElOptionkey={company.companyGuid}value={company.companyGuid}label={company.companyName}/>
))}
然后考虑临时“绕过”提示,只是想“跳过这个文件的所有 ESLint 检查”,可以在文件最顶部加:
/* eslint-disable */
注意这只能跳过 ESLint 规则错误,对 Parsing error 无效。
如果用 VSCode,Parsing error 可能是编辑器的 TypeScript 或 ESLint 插件报的,可以尝试重启编辑器,清理缓存。
但发现,该注释只能解决使用组件的位置不报错,但是组件内部第一行的错误提示还在。
由此,有应该临时解决方法(⚠️ 不推荐在生产中使用,仅用于排查问题)。
Parsing error 这种错误本质是 ESLint 在解析代码(parser 阶段)就失败了,所以普通的 // eslint-disable 注释是无效的,根本没机会生效。
如果想“全局忽略”这类 Parsing error,唯一可行的做法就是:在 ESLint 配置里,针对报错的文件路径,把 ESLint 关闭(忽略)掉。
在 .eslintrc.js 内部添加:
module.exports = {// 其他配置...ignorePatterns: ['src/path/to/xxx.jsx', // 忽略这个文件不让 eslint 解析// 也可以用通配符忽略一大类文件,比如:// 'src/**/*.jsx'],
};
ignorePatterns 可以完全不让 ESLint 解析这个文件,也就是彻底绕过这个错误。缺点是这个文件就完全不检查了。
经历了一系列的研究,包括升级包版本,使用不同的编译器,结果万万想不到,影响点居然是类型值 [string, string] 不能识别:
const add = (dateRange: [string, string]) => {const [startDate, endDate] = dateRange || [];if (!startDate || !endDate) return;// ...dateDay.value = [];
};
更改如下,可以顺利运行!
const add = (dateRange: string[]) => {const [startDate, endDate] = dateRange || [];if (!startDate || !endDate) return;// ...dateDay.value = [];
};
⚠️ 注意:以上方法仅作为思路参考,并不适用于所有项目。由于我这边项目使用的是公司自研的编译器,实际情况可能有所差异。
大哭(꒦_꒦)