{"id":18471,"library":"koa-methodoverride","title":"koa-methodoverride","description":"HTTP method override middleware for Koa, allowing clients to override the HTTP method (e.g., POST to PUT/DELETE) via X-HTTP-Method-Override header or query parameter. Version 2.0.0 is the latest stable release, designed for Koa v1 (generator-based) and Node >=4. It is a simple port of Express's method-override middleware. Unlike more modern alternatives, it does not support Koa v2 async/await natively and has minimal configuration options.","status":"maintenance","version":"2.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/koa-modules/methodoverride","tags":["javascript","method","override","koa","middleware"],"install":[{"cmd":"npm install koa-methodoverride","lang":"bash","label":"npm"},{"cmd":"yarn add koa-methodoverride","lang":"bash","label":"yarn"},{"cmd":"pnpm add koa-methodoverride","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"This package is CJS-only; ESM import will fail.","wrong":"import methodOverride from 'koa-methodoverride';","symbol":"methodOverride","correct":"const methodOverride = require('koa-methodoverride');"},{"note":"It must be used as middleware, not invoked on the app directly.","wrong":"require('koa-methodoverride')(app);","symbol":"default (function)","correct":"app.use(require('koa-methodoverride')());"},{"note":"Options are passed as string (header name) or object with `methods` array; passing an object with `header` key is not supported.","wrong":"app.use(methodOverride({header: 'X-HTTP-Method'}));","symbol":"with options","correct":"const methodOverride = require('koa-methodoverride'); app.use(methodOverride('X-HTTP-Method'));"}],"quickstart":{"code":"const Koa = require('koa');\nconst methodOverride = require('koa-methodoverride');\n\nconst app = new Koa();\napp.use(methodOverride());\napp.use(async (ctx) => {\n  ctx.body = `Method: ${ctx.method}`;\n});\napp.listen(3000);","lang":"javascript","description":"Shows minimal setup: add methodOverride middleware before your route handler, then send a POST with header X-HTTP-Method-Override: PUT to see the method change."},"warnings":[{"fix":"Use koa-methodoverride@1 for Koa v1, or use a different method-override package compatible with Koa v2.","message":"koa-methodoverride v2 does not support Koa v2 async/await syntax; middleware must be generator functions.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Ensure body parsing (e.g., koa-bodyparser) is used before methodOverride if you need to parse request body.","message":"The middleware modifies `ctx.method` only; it does not alter the request body. You must still have a body parser if you expect a POST body.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Migrate to a Koa v2 compatible package like koa-method-override (note: different name).","message":"This package has not been updated since 2016 and is considered deprecated in favor of method-override for Koa v2.","severity":"deprecated","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Use const methodOverride = require('koa-methodoverride'); (CommonJS).","cause":"Importing package incorrectly (e.g., using default import in ESM).","error":"TypeError: methodOverride is not a function"},{"fix":"Use Koa v1 or wrap middleware with koa-convert: const convert = require('koa-convert'); app.use(convert(methodOverride()));","cause":"Using Koa v2 (async/await) with this generator-based middleware.","error":"TypeError: app.use() requires a generator function"},{"fix":"Run npm install koa-methodoverride; use require('koa-methodoverride') (no default export).","cause":"Package not installed or ESM import path incorrect.","error":"Cannot find module 'koa-methodoverride'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}