获取一个错误“str.substr不是一个函数”当使用我的浏览器的本地主机页面,但服务器正在运行?

在启动服务器后请求我的网页时,出现以下错误(服务器正常运行,请求页面时发生问题):

TypeError: str.substr is not a function at createGetter (C:\Users\mypath\node_modules\method-override\index.js:88:11) at methodOverride (C:\Users\mypath\node_modules\method-override\index.js:50:7) at Layer.handle [as handle_request] (C:\Users\mypath\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\Users\mypath\node_modules\express\lib\router\index.js:312:13) at C:\Users\mypath\node_modules\express\lib\router\index.js:280:7 at Function.process_params (C:\Users\mypath\node_modules\express\lib\router\index.js:330:12) at next (C:\Users\mypath\node_modules\express\lib\router\index.js:271:10) at logger (C:\Users\mypath\node_modules\morgan\index.js:144:5) at Layer.handle [as handle_request] (C:\Users\mypath\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\Users\mypath\node_modules\express\lib\router\index.js:312:13) 

我还在学习关于MEAN栈,请耐心等待,我的server.js如下:

 var express = require('express'), favicon = require('serve-favicon'), stylus = require('stylus'), logger = require('morgan'), methodOverride = require('method-override'), session = require('express-session'), bodyParser = require('body-parser'), multer = require('multer'), upload = multer({ dest: 'uploads/'}), errorHandler = require('errorhandler'); var app = express(); function compile(src, path) { return stylus(src).set('filename', path); } app.set('views', __dirname + '/server/views'); app.set('view engine', 'jade'); app.use(favicon(__dirname + '/public/images/favicon.ico')); app.use(logger('dev')); app.use(methodOverride); app.use(session( {resave: true, saveUninitialized: true, secret: 'uwotm8'} )); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true})); //app.use(multer()); app.use(stylus.middleware( { src: __dirname + '/public', compile: compile } )); app.use(express.static(__dirname + 'public')); app.get('/', function(req, res) { res.render('index'); }); var port = 3030; app.listen(port); console.log('Listening on port ' + port + '...'); 

我安装了server.js文件中使用的所有依赖关系(我从一篇文章中读到,这是一种新的做法,而不是像我的教程中那样使用varexpression式),我还评论了multer,因为我不知道如何使用它(如果我取消注释,当我运行nodemon server.js时出现错误),我正在观看旧的教程,因为此刻我无法访问到现代教程,任何帮助都将得到慷慨的赞赏,谢谢。

app.use(methodOverride); 应该是像app.use(methodOverride('_method')); ,这取决于你的设置。 看到更多的想法/信息的例子 。

另外,你使用multer的问题很可能是因为你正在尝试使用旧的API,但是前段时间API改变了(请看这里的例子)。

replaceapp.use(methodOverride);app.use(methodOverride());