app.use(express.methodOverride('_method') 실행 오류

2486 단어
오류 정보
F:\my_dev_work\todo
ode_modules\express\lib\express.js:99       throw new Error('Most middleware (like ' + name + ') is no longer bundle             ^ Error: Most middleware (like methodOverride) is no longer bundled with Express a nd must be installed separately. Please see https://github.com/senchalabs/connec t#middleware.     at Function.Object.defineProperty.get (F:\my_dev_work\todo
ode_modules\expr ess\lib\express.js:99:13)     at Object.<anonymous> (F:\my_dev_work\todo\app.js:23:16)     at Module._compile (module.js:460:26)     at Object.Module._extensions..js (module.js:478:10)     at Module.load (module.js:355:32)     at Function.Module._load (module.js:310:12)     at Module.require (module.js:365:17)     at require (module.js:384:17)     at Object.<anonymous> (F:\my_dev_work\todo\bin\www:7:11)     at Module._compile (module.js:460:26)     at Object.Module._extensions..js (module.js:478:10)     at Module.load (module.js:355:32)     at Function.Module._load (module.js:310:12)     at Function.Module.runMain (module.js:501:10)     at startup (node.js:129:16)     at node.js:814:3

원인:express 버전 문제
express3.x 코드:
app.use(express.methodOverride('_method'));
app.use(express.static(path.join(__dirname, 'public')));

페이지 코드:
<form method='post' action='/tasks/<%=task.id%>'>
    <input type='hidden' name='_method' value='put'>
    <input type='text' name='taskno' value='<%=task.taskno%>'>
    <input type='text' name='taskname' value='<%=task.taskname%>'>
    <input type='submit' value='save'>
</form>

express4.x 코드:
npm install method-override
var methodOverride = require('method-override');

app.use(methodOverride('_method'));
app.use(express.static(path.join(__dirname, 'public')));

페이지 코드:
<form method='post' action='/tasks/<%=task.id%>?_method=put'>
    <input type='text' name='taskno' value='<%=task.taskno%>'>
    <input type='text' name='taskname' value='<%=task.taskname%>'>
    <input type='submit' value='save'>
</form>

좋은 웹페이지 즐겨찾기