错误信息
F:\my_dev_work\todo\node_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\node_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>