Node.js - Express - 出现错误 `ReferenceError: bodyparser未定义`

4
我正在从server.js调用config文件。当我调用config文件时,我收到错误消息ReferenceError:bodyparser未定义。我不明白我的问题在哪里。
有人能帮忙解决吗?
这是我的配置文件:
var 

path = require('path'),
routes = require('./routes'),
exphbs = require('express-handlebars'),
express = require('express'),
bodyParser = require('body-parser'),
cookieParser = require('cookie-parser'),
morgan = require('morgan'),
methodOverride = require('method-override'),
errorHandler = require('errorhandler');


module.exports = function(app) {

    app.use(morgan('dev'));

    app.use(bodyParser({
        uploadDir:path.join(__dirname, 'public/upload/temp')
    }));

    app.use(methodOverride());

    app.use(cookieParser('some-secret-value-here'));
    routes(app);

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

    if ('development' === app.get('env')) {
        app.use(errorHandler());
    }

    return app;
};

server.js:

var express = require('express'),
    config  = require('./server/configure'),
    app     = express();

app
    .set( "port", process.env.PORT || 3300 );

app
    .set( "views", __dirname + '/views');

app = config( app );

// app
//  .get('/', function( req, res ) {

//      res.send( 'Hello World' );

//  } );


app
    .listen( app.get('port'), function () {

        console.log('Server up: http://localhost:' + app.get('port'));

    })

更新

module.exports = function(app) {

    app.use(morgan('dev'));

    app.use(bodyParser.json());

    app.use(bodyParser.urlencoded({ extended: false }));

    app.use(bodyParser({
        uploadDir:path.join(__dirname, 'public/upload/temp')
    }));

    app.use(methodOverride());

    app.use(cookieParser('some-secret-value-here'));
    routes(app);

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

    if ('development' === app.get('env')) {
        app.use(errorHandler());
    }

    return app;
};

你能展示一下你的 server.js 文件吗? - Jérôme
server.js已添加。请查看我的问题。 - 3gwebtrain
它是否已安装并包含在 node_modules 中? - ddepablo
是的,它已经安装了。这就是我在这里想知道的。 - 3gwebtrain
奇怪的是,bodyparser 在错误中是小写的。你在哪一行得到了这个错误? - Nonemoticoner
2个回答

4
config.js的函数内部添加以下内容。
// parse application/json
app.use(bodyParser.json());
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse the raw data
app.use(bodyParser.raw());
// parse text
app.use(bodyParser.text());

bodyParser文档的参考链接

更新后的代码:

在configure.js文件中:

var path = require('path'),
    express = require('express'),
    bodyParser = require('body-parser');
module.exports = function(app) {
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser({
        uploadDir:path.join(__dirname, 'public/upload/temp')
    }));
    return app;
};

在 server.js 中
var express = require('express'),
    config  = require('./configure'),
    app     = express();
    bodyParser = require('body-parser');

app = config( app );


app.post('/about', function( req, res ) {
            console.log(req.body.message);
            res.send( 'Hello World' );
    });
app.listen( 3000, function () {
            console.log('Server up: http://localhost:' + 3000);
        });

我仍然收到相同的错误。有关更新后的代码,请参见我的问题更新。 - 3gwebtrain
你是如何发送请求中的数据的? - Himani Agrawal
你能从这里下载并查看吗:https://www.dropbox.com/s/0ew7h43qvhhcy5r/NodeJs.7z?dl=0 - 3gwebtrain
答案已更新以解析其他格式。有人试过吗?如果用户名是在请求体中发送的参数,则可以使用 console.log(req.body.username) 进行检查。 - Himani Agrawal
我更新了你的代码并尝试运行,但在启动节点本身时出现错误。 - 3gwebtrain
显示剩余2条评论

-1

类型错误:无法读取未定义的属性“Store” 在新模块导出(/home/dickens/Desktop/node-login/node_modules/connect-mongo/src/index.js:58:50) 在对象中。 (/home/dickens/Desktop/node-login/app.js:56:14)

更改您的index.js目录(/home/user/your-app/node_modules/connect-mongo/src/index.js:58:50)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接