feathersjs / feathers

The API and real-time application framework
https://feathersjs.com
MIT License
14.97k stars 742 forks source link

Cannot redefine property: Symbol(@feathersjs/schema/dispatch) #3476

Open GodBleak opened 2 months ago

GodBleak commented 2 months ago

I've encountered an issue where resolveExternal will throw Cannot redefine property: Symbol(@feathersjs/schema/dispatch). However, I can't reproduce this reliably. Sometimes the guard introduced with #3380 catches it, other times it passes the guard and the property is defined by runResolvers, then setDispatch attempts to redefine it. I don't know what influences the different behaviour, as I'll get either result, seemingly at random, rerunning the server without changes. The resolver is just as it was generated:

export const messageExternalResolver = resolve<Message, HookContext<MessageService>>({})

Along with the around hooks:

around: {
  all: [authenticate('jwt'), schemaHooks.resolveExternal(messageExternalResolver), schemaHooks.resolveResult(messageResolver)]
}

I think the guard might need to be moved to immediately before setDispatch, or perhaps a second guard could be added.

System configuration

Module versions: @feathers/feathers:5.0.24, @feathers/schema:5.0.23

NodeJS version: NodeJS v18.12.1 with tsx v4.7.1

Operating System: Manjaro Linux

Module Loader: ESM