我需要创建一个web服务,并且我正在服务器中使用node.js。但当我在localhost中运行时,我会得到一个错误:
错误:大多数中间件(像bodyParser)不再与Express捆绑,必须单独安装。请参阅https://github.com/senchalabs/connect#中间件。
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>node neo4jtest.js Error: Most middleware (like bodyParser) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware. at Function.Object.defineProperty.get (C:\node\NodejsNeo4j1-master\node_modules\express\lib\express.js:89:13) at Object.<anonymous> (C:\node\NodejsNeo4j1-master\neo4jtest.js:26:18) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3
您需要将旧的捆绑中间件(express.bodyparser
,express.methodoverrid
,express.errorhandler
)替换为外部/单独的中间件。错误中的链接给出了这些新中间件的名称。您可能希望检查这些中间件的文档,以检查Express3以来的任何API更改。
问题内容: 我需要创建一个Web服务,并且正在服务器中使用Node.js。但是当我在本地主机上运行时,出现错误: 错误:大多数中间件(如bodyParser)不再与Express捆绑在一起,必须单独安装。请参阅https://github.com/senchalabs/connect#middleware。 neo4jtest.js 以下是我从控制台收到的错误: 问题答案: 您需要替换旧的捆绑中间
当我发送一个json对象时,我想捕获来自body Parser()中间件的错误,它是无效的,因为我想发送一个自定义响应,而不是一个通用的400错误。 这就是我所拥有的,它起作用了: 但在我看来,这是一种非常丑陋的方法,因为我正在比较可能在未来的express版本中更改的错误消息。有没有其他方法可以捕获bodyParser()错误? 编辑: 这是请求正文包含无效json时的错误: 漂亮的打印堆栈:
本文向大家介绍express的中间件bodyParser详解,包括了express的中间件bodyParser详解的使用技巧和注意事项,需要的朋友参考一下 bodyParser用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理. 下面是一个文件上传的例子. 建立一个1.html页面 上面的XMLHttpRequest对象与FormData对象时HT
我使用的是Express4.0并且我知道body parser已经从express内核中删除了,我使用的是推荐的替换,但我得到的却是 我在哪里可以找到这些所谓的中间件?或者我不应该得到这个错误?
问题内容: 我正在使用Express 4.0,并且我知道主体解析器已从Express核心中移除,我使用的是推荐的替代品,但是我得到了 我在哪里可以找到这个所谓的中间件?还是我不应该得到这个错误? 问题答案: 这意味着自2014年6月19日起,不赞成使用 构造函数 。 您现在需要分别调用方法 等等。 如果仍然收到警告,则需要使用 在现在的配置对象的关键需要明确的被传递,因为它现在已经没有默认值。 如
问题内容: 我有一个Express中间件,因为我想在其中使用中间件来清理我的代码。 问题在于,当它拒绝时,它不会进入我的错误中间件,但是如果我删除了关键字,并且在中间件中,它将删除。 所以我得到的不是输入我的错误处理中间件,而是如何让错误冒泡并表达处理它? 问题答案: 问题是当它拒绝时,它不会进入我的错误中间件,但是如果我删除了async关键字并扔进了中间件中,它就会去。 目前不支持诺言,将来的版