2016-07-12 6 views
0

Ich versuche, eine einfache HTML-Seite zu schreiben, die nach einem Klick auf einen Wert aus einem Texteingabefeld an Knotenserver sendet, der dann auf der Konsole des eingegebenen Werts druckt . wissen, dass mit ausdrücklicher 4 der vorherigen bodyparser ist veraltet und im Anschluss an die Diskussion hier: bodyParser is deprecated express 4Node Express bodyparser veraltet, neue Syntax funktioniert nicht

Aber mit dem folgenden Code noch ich Fehler erhalten, wenn Sie den Server starten:

var express = require('express'); 
var app = express(); 

app.use(express.static('resources')); 
app.use(express.static(__dirname)); 
app.use(express.bodyParser.urlencoded()); 

app.get('/', function (req, res) { 
    res.sendFile(__dirname + "/" + "index.html"); 
}) 

app.post('/java_preview', function (req, res) { 

    console.log("Request for java_preivew:"); 
    console.log(req.body.url); 
}) 

var server = app.listen(3000, function() { 
    console.log("Server started...") 
    var host = server.address().address 
    var port = server.address().port 

    console.log("Listening at http://%s:%s", host, port) 
}) 

HTML:

$(document).ready(function(){ 
     $('#previewButton').click(function() { 
      //var enterURL=$('inputUrl').val(); 
      //alert("Button Clicked:"+$('#inputUrl').val()); 
      $.post("java_preview", {url: $('#inputUrl').val()}); 
     }); 

     }); 

Fehlerprotokoll:

/Users/-/Google Drive/papers/ISWC2016_demo/webpages/node_modules/express/lib/express.js:99 
     throw new Error('Most middleware (like ' + name + ') is no longer bundle 
      ^
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 (/Users/-/Google Drive/papers/ISWC2016_demo/webpages/node_modules/express/lib/express.js:99:13) 
    at Object.<anonymous> (/Users/-/Google Drive/papers/ISWC2016_demo/webpages/startserver.js:6:16) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Function.Module.runMain (module.js:501:10) 
    at startup (node.js:129:16) 
    at node.js:814:3 

any sugg estions bitte

+0

Haben Sie lesen das Fehlerprotokoll? Es sagt dir genau, was zu tun ist. –

+0

Entschuldigung, ich könnte einige Grundlagen hier fehlen, aber ich verstehe nicht. Meinst du, es hängt damit zusammen, wo 'Express' installiert ist? – Ziqi

Antwort

3

bodyParser ist kein Teil des Express mehr. Installiere es als Abhängigkeit mit npm und füge es in dein Projekt ein.

var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({extended : false})); 
+0

Es mag erwähnenswert sein, dass das' body-parser'-Paket separat installiert werden muss :) – robertklep

0

das Wort entfernt express von hier:

app.use(express.static('resources')); 
app.use(express.static(__dirname)); 
app.use(express.bodyParser.urlencoded()); 

Und alles sollte funktionieren :)

+0

danke, wenn Sie 'app.use (bodyparser.urlencoded())' meinen, dann erzeugt es einen neuen Fehler: ReferenceError: bodyParser ist nicht definiert – Ziqi

+0

Sie müssen es am Anfang der Datei enthalten :) 'var bodyParser = require ('body-parser'); 'no inclusion, no fun;) –

0

Die gleiche Antwort, die Sie sich beziehen, sagen, dass Sie erweitert verwenden müssen: true

If you're still getting a warning with urlencoded you need to use 

app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
The extended config object key now needs to be explicitly passed, 
since it now has no default value.