javascript - 使用我的浏览器访问本地主机页面但服务器正在运行时出现错误 "str.substr is not a function"?

标签 javascript node.js express mean-stack

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

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 文件中使用的所有依赖项(我从一篇文章中读到这是新的方法,而不是像我的教程中那样仅使用 var express),我还注释掉了 multer,因为我不确定如何使用它(如果我取消注释,我在运行 nodemon server.js 时会收到错误消息),我正在观看旧教程,因为我目前无法访问现代教程,我们将不胜感激任何帮助,谢谢.

最佳答案

app.use(methodOverride); 应该类似于 app.use(methodOverride('_method'));,具体取决于您的设置。查看examples了解更多想法/信息。

此外,您在使用 multer 时遇到的问题很可能是因为您正在尝试使用旧的 API,但 API 已在一段时间前更改(参见示例 here)。

关于javascript - 使用我的浏览器访问本地主机页面但服务器正在运行时出现错误 "str.substr is not a function"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826992/

相关文章:

node.js - 将常见的模拟代码移动到包含 Jest 手动模拟的单独文件中

c++ - ofstream 不创建文件(Node.js 插件)

javascript - 将base64图像数据转换为png?

javascript - XP Home 上适用于 Internet Explorer 的 Microsoft 脚本编辑器?

javascript - Mongodb findOne 但首先检查请求是否为空

javascript - 查找 json 对象中存在的键

amazon-web-services - AWS Lambda 函数无法从 EC2 实例 : SequelizeConnectionError connect ETIMEDOUT 访问 MySQL 数据库

node.js - Mongoose 查找与执行。如何返回值?

javascript window.open 在 safari 浏览器中

javascript - 如何通过一个函数实时验证表单中的多个元素(例如名称、城市和州)?