EN
← 错误索引

F_SYSTEM_OPTION_OVERRIDE_REQUIRED

Option 需要显式覆盖

较内层作用域声明了与上层 Module option 同名的字段或动作,但没有确认覆盖意图。

更新于

复现

Command 字段会遮蔽上层 option Provider 的同名字段,但没有显式确认:

src/app.module.ts
import { Command, Flag, Handler, Module, Option, createApp } from 'func'

@Option()
class AppOptions {
  @Flag()
  verbose = false
}

@Command('build')
class BuildCommand {
  @Flag()
  verbose = false

  @Handler()
  run() {}
}

@Module({ commands: [BuildCommand], options: [AppOptions] })
class AppModule {}

createApp(AppModule)

如何修复

普通重复声明应重命名或删除。确实需要由 Command 或 feature @Option() 字段替换上层字段时,在该字段上同时使用 @Override();替换根模块的 @OptionCommand 时,在 feature action 上设置 overrideAll: true

覆盖只改变公开 token 的绑定目标,不会把用户值同时写入被遮蔽的上层字段。