You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@typescript-eslint/member-ordering配置无效,求排查方案

@typescript-eslint/member-ordering 配置无效排查思路

报错信息

Configuration for rule "@typescript-eslint/member-ordering" is invalid:
                Value ["signature","public-static-field","protected-static-field","private-static-field","public-decorated-field","protected-decorated-field","private-decorated-field","public-instance-field","protected-instance-field","private-instance-field","public-abstract-field","protected-abstract-field","private-abstract-field","public-constructor","protected-constructor","private-constructor","public-static-method","protected-static-method","private-static-method","public-decorated-method","protected-decorated-method","private-decorated-method","public-instance-method","protected-instance-method","private-instance-method","public-abstract-method","protected-abstract-method","private-abstract-method"] should be string.
                Value ["signature","public-static-field","protected-static-field","private-static-field","public-decorated-field","protected-decorated-field","private-decorated-field","public-instance-field","protected-instance-field","private-instance-field","public-abstract-field","protected-abstract-field","private-abstract-field","public-constructor","protected-constructor","private-constructor","public-static-method","protected-static-method","private-static-method","public-decorated-method","protected-decorated-method","private-decorated-method","public-instance-method","protected-instance-method","private-instance-method","public-abstract-method","protected-abstract-method","private-abstract-method"] should be equal to one of the allowed values.
                Value "private-abstract-field" should be equal to one of the allowed values.
                Value "private-abstract-field" should be array.
                Value "private-abstract-field" should match exactly one schema in oneOf.
                Value ["signature","public-static-field","protected-static-field","private-static-field","public-decorated-field","protected-decorated-field","private-decorated-field","public-instance-field","protected-instance-field","private-instance-field","public-abstract-field","protected-abstract-field","private-abstract-field","public-constructor","protected-constructor","private-constructor","public-static-method","protected-static-method","private-static-method","public-decorated-method","protected-decorated-method","private-decorated-method","public-instance-method","protected-instance-method","private-instance-method","public-abstract-method","protected-abstract-method","private-abstract-method"] should be object.
                Value ["signature","public-static-field","protected-static-field","private-static-field","public-decorated-field","protected-decorated-field","private-decorated-field","public-instance-field","protected-instance-field","private-instance-field","public-abstract-field","protected-abstract-field","private-abstract-field","public-constructor","protected-constructor","private-constructor","public-static-method","protected-static-method","private-static-method","public-decorated-method","protected-decorated-method","private-decorated-method","public-instance-method","protected-instance-method","private-instance-method","public-abstract-method","protected-abstract-method","private-abstract-method"] should match exactly one schema in oneOf.

当前配置

"@typescript-eslint/member-ordering": [
    "error",
    {
        "default": [
            "signature",
            "public-static-field",
            "protected-static-field",
            "private-static-field",
            "public-decorated-field",
            "protected-decorated-field",
            "private-decorated-field",
            "public-instance-field",
            "protected-instance-field",
            "private-instance-field",
            "public-abstract-field",
            "protected-abstract-field",
            "private-abstract-field",
            "public-constructor",
            "protected-constructor",
            "private-constructor",
            "public-static-method",
            "protected-static-method",
            "private-static-method",
            "public-decorated-method",
            "protected-decorated-method",
            "private-decorated-method",
            "public-instance-method",
            "protected-instance-method",
            "private-instance-method",
            "public-abstract-method",
            "protected-abstract-method",
            "private-abstract-method"
        ]
    }
],

排查与解决方案

1. 移除非法成员类型

报错核心指向private-abstract-field和private-abstract-method不被允许,原因是TypeScript本身不支持私有抽象成员(私有成员无法被子类访问实现,不符合抽象成员的设计初衷),因此@typescript-eslint/member-ordering规则也未提供这两个配置项。直接从数组中删除这两个值即可修复配置合法性问题。

修正后的配置示例:

"@typescript-eslint/member-ordering": [
    "error",
    {
        "default": [
            "signature",
            "public-static-field",
            "protected-static-field",
            "private-static-field",
            "public-decorated-field",
            "protected-decorated-field",
            "private-decorated-field",
            "public-instance-field",
            "protected-instance-field",
            "private-instance-field",
            "public-abstract-field",
            "protected-abstract-field",
            "public-constructor",
            "protected-constructor",
            "private-constructor",
            "public-static-method",
            "protected-static-method",
            "private-static-method",
            "public-decorated-method",
            "protected-decorated-method",
            "private-decorated-method",
            "public-instance-method",
            "protected-instance-method",
            "private-instance-method",
            "public-abstract-method",
            "protected-abstract-method"
        ]
    }
]

2. 校验依赖版本一致性

确认@typescript-eslint/eslint-plugin、@typescript-eslint/parser与eslint版本兼容。v5.51.0的插件/parser要求ESLint版本在^6.0.0 || ^7.0.0 || ^8.0.0范围内,若ESLint版本过低或过高,可能导致规则解析异常。可查看锁文件(package-lock.json/yarn.lock)确认实际安装版本,必要时重新安装依赖:

rm -rf node_modules package-lock.json
npm install

3. 清除ESLint缓存

ESLint可能缓存旧的规则定义,运行lint时添加--no-cache参数强制重新解析配置:

eslint . --no-cache

4. 简化配置测试

若问题仍存在,先将配置简化为最小有效版本(如仅保留["public-static-field", "public-constructor"]),确认配置可正常运行后,再逐步添加原有成员项,定位是否存在其他非法配置值。

内容的提问来源于stack exchange,提问作者jkyoutsey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:55:31