POST method not allowed in express app after passing it to Colyseus constructor

I am trying to add a POST route to my express app which is also using Colyseus.
Here is a demo code:

const app = express();

// This should add POST in the Allow request headers
app.use(cors());
app.options('*', cors());

// This is the Colyseus implementation
const gameServer = new Server({
server: createServer(app)
});

app.post('/signup', function (req, res) {
console.log(req.body);
console.log(res);
res.end();
})

When I make a POST request using Postman I receive error 405: Method not allowed
In the headers I see this:
Allow →GET, HEAD, OPTIONS

So it seems that POST does not work... When I remove Colyseus and only use the app, the POST requests work.

Any idea how to fix this, I'd be really grateful.

Hey, still no answer to my issue. If anyone out there has any idea, I'd be really grateful.

Thanks! :)

Try reordering the declarations. ie

app.post('/signup', function (req, res) {
console.log(req.body);
console.log(res);
res.end();
})

// This is the Colyseus implementation
const gameServer = new Server({
server: createServer(app)
});

As far as I know express will process the hooks in the order they are declared so if colyseus is acting like a catch-all nothing after it will be processed. I am doing the same thing and I have all my HTTP handlers declared before the colyseus implementation.

Oh god, that actually solved it! Thank you very much! I thought I was going crazy :D

Hello! I've run into the same issue, but as I want run my server on Colyseus Arena I can't define handlers directly before server. According to https://docs.colyseus.io/arena/getting-started/modify-colyseus-server/ I need to use arena.config.ts. Where, by design, I can manipulate expres app only after the server is created

Is there any way to add POST to allowed methods with this configuration? Or may be it is better to move to self-hosted option?