运行ember serve触发EslintValidationFilter构建错误求助
解决Ember Serve时的EslintValidationFilter错误(Cannot read property 'body' of undefined)
我之前在运行ember serve时也碰到过完全一样的问题,这个错误是eslint-plugin-ember插件里的require-super-in-init规则触发的bug,大概率和你components/type-compte.js里的init方法写法有关。下面是几个可行的解决步骤:
步骤1:检查目标文件的init方法
打开components/type-compte.js,找到组件的init方法,看看是不是存在以下情况:
init方法是空的(没有函数体)- 用了箭头函数定义
init(Ember组件的生命周期钩子不推荐用箭头函数) - 语法不完整,比如漏写了大括号
{}
举个会触发bug的错误写法示例:
// 错误写法:空的init方法 init() {} // 错误写法:用箭头函数定义init init = () => { super.init(...arguments); }
步骤2:临时禁用该规则(紧急启动项目)
如果现在需要快速启动项目,不想纠结语法问题,可以先在你的ESLint配置文件(比如.eslintrc.js)里临时禁用这个规则:
module.exports = { // 其他配置项... rules: { // 添加这一行禁用规则 'ember/require-super-in-init': 'off' } };
步骤3:修复init方法的标准写法
把init方法改成Ember推荐的标准写法,确保有完整的函数体并且正确调用super.init:
init() { super.init(...arguments); // 这里添加你的初始化逻辑,如果没有逻辑也可以留个注释占位 // 示例:// 初始化组件状态或绑定事件 }
步骤4:升级eslint-plugin-ember插件
如果是插件版本过低导致的兼容性bug,尝试升级到最新版本:
# npm用户执行 npm update eslint-plugin-ember --save-dev # yarn用户执行 yarn upgrade eslint-plugin-ember --dev
错误原因说明
这个Cannot read property 'body' of undefined错误,本质是require-super-in-init规则在解析不符合预期的init函数语法时,没有做足够的空值判断,导致尝试读取不存在的body属性时抛出异常。
内容的提问来源于stack exchange,提问作者Slimane amiar
相关产品推荐
相关产品推荐

