当前位置: 首页 > 面试题库 >

错误:大多数中间件(如bodyParser)不再与Express捆绑在一起

羊昊苍
2023-03-14
问题内容

我需要创建一个Web服务,并且正在服务器中使用Node.js。但是当我在本地主机上运行时,出现错误:

错误:大多数中间件(如bodyParser)不再与Express捆绑在一起,必须单独安装。请参阅https://github.com/senchalabs/connect#middleware。

neo4jtest.js

var config = require('./config');   
var bodyParser = require('body-parser');

var app = express();

var neo4jurl = process.env.NEO4J_URL ;
neo4jurl = neo4jurl +'/db/data/';

var query = [ 'START me=node:node_auto_index(name={inputusername}) MATCH me<--friend<--friend_of_friend where (friend_of_friend.entitytype={inputentitytype}) RETURN friend_of_friend;' ];
var insertquery = [ 'CREATE (user {entitytype:{inputentitytype}, name : {inputname}}) return user;' ];
var queryforallrelation = [ 'start n = node:node_auto_index(name={inputusername}) match(n)--(x)  return x;'];

// Config


    var env = process.env.NODE_ENV || 'development';
    if ('development' == env) {
    // configure stuff here
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(application_root, "public")));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    }

app.get('/api', function (req, res) {
  res.send('REST API is running');
});

app.get('/friendoffriend/:username', function (req, res){
    res.set({'Content-Type': 'text/json'});
    username = req.params.username;
    type = 'user';
    neo4j.connect(neo4jurl, function (err, graph) {

            graph.query(query.join('\n'), {inputusername : username, inputentitytype :type} ,function (err, results) {  
                if (err) {
                    res.send(HTTPStatus.INTERNAL_SERVER_ERROR,'Internal Server Error');
                }
                else {
                    res.send(HTTPStatus.OK,JSON.stringify(results));
                }
            }); 
    });
});

app.get('/insertuser/:username', function (req, res){
    res.set({'Content-Type': 'text/json'});
    username = req.params.username;
    type = 'user';
    neo4j.connect(neo4jurl, function (err, graph) {
            graph.query(insertquery.join('\n'), {inputname : username, inputentitytype :type} ,function (err, results) {    
                if (err) {
                    res.send(HTTPStatus.INTERNAL_SERVER_ERROR,'Internal Server Error');
                }
                else {
                    res.send(HTTPStatus.OK,JSON.stringify(results));
                }
            }); 
    });
});

//Cypher Query with Javascript Callback Example

function neo4jQuery(neo4jurl, query, parameters, giveresults) {
    neo4j.connect(neo4jurl, function (err, graph) {
        graph.query(query.join('\n'), {inputusername : 'andrew'} ,function (err, results) { 
            if (err) {
                giveresults(HTTPStatus.INTERNAL_SERVER_ERROR);
            }
            else {
                giveresults(JSON.stringify(results));
            }
        }); 
    });
}

app.get('/allrelations/:username', function (req, res){
    res.set({'Content-Type': 'text/json'});
    username = req.params.username;
    parameters = {inputusername : username};
    neo4jQuery(neo4jurl, queryforallrelation, parameters, function(results){
        res.send(results);
    });
});



app.listen(1212);

以下是我从控制台收到的错误:

C:\ node \ NodejsNeo4j1-master>节点neo4jtest.js

错误:大多数中间件(如bodyParser)不再与Express捆绑在一起,必须单独安装。请参阅https://github.com/senchalabs/connect#middleware。
    在Function.Object.defineProperty.get(C:\ node \ NodejsNeo4j1-master \ node_modules \ express \ lib \ express.js:89:13)
    在Object。<anonymous>(C:\ node \ NodejsNeo4j1-master \ neo4jtest.js:26:18)
    在Module._compile(module.js:456:26)
    在Object.Module._extensions..js(module.js:474:10)
    在Module.load(module.js:356:32)
    在Function.Module._load(module.js:312:12)
    在Function.Module.runMain(module.js:497:10)
    在启动时(node.js:119:16)
    在node.js:906:3

问题答案:

您需要替换旧的捆绑中间件使用(express.bodyParserexpress.methodOverrideexpress.errorHandler)与外部/独立的中间件。错误中的链接为您提供了这些新中间件的名称。您可能需要查看这些中间件的文档,以检查自Express
3以来的所有API更改。



 类似资料:
  • 我需要创建一个web服务,并且我正在服务器中使用node.js。但当我在localhost中运行时,我会得到一个错误: 错误:大多数中间件(像bodyParser)不再与Express捆绑,必须单独安装。请参阅https://github.com/senchalabs/connect#中间件。

  • 当我发送一个json对象时,我想捕获来自body Parser()中间件的错误,它是无效的,因为我想发送一个自定义响应,而不是一个通用的400错误。 这就是我所拥有的,它起作用了: 但在我看来,这是一种非常丑陋的方法,因为我正在比较可能在未来的express版本中更改的错误消息。有没有其他方法可以捕获bodyParser()错误? 编辑: 这是请求正文包含无效json时的错误: 漂亮的打印堆栈:

  • 本文向大家介绍express的中间件bodyParser详解,包括了express的中间件bodyParser详解的使用技巧和注意事项,需要的朋友参考一下 bodyParser用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理. 下面是一个文件上传的例子. 建立一个1.html页面 上面的XMLHttpRequest对象与FormData对象时HT

  • 问题内容: 我了解launch4j不会将JRE捆绑在中,但是您必须将其放置在它旁边。我的问题是,我应该怎么做?Maven是否有一种方法可以自动找到并复制我用来构建应用程序的JDK的JRE并将其复制到给定目录? 我试图做这样的事情: 但是程序无法启动。它显示了一个小对话框,该对话框立即消失了(它似乎是空白的,但是消失得太快了,我无法真正注意到它)。 问题答案: 更新:删除了我以前的答案,并用经过测试

  • 我刚刚下载了Eclipse Luna的最新版本,并立即安装了Aptana3.0插件。在这样做之后,我得到了一堆错误,与本文中列出的错误相同: “加载包[...]”期间发生内部错误 当我重新启动Eclipse时,我仍然遇到同样的错误,它似乎没有得到修复。

  • 当我跑的时候