5

Ich installierte Express global und Npm installiert meine Express-App, aber weder die Intelligenz oder die App funktioniert (ich verwende Visual Studio-Code auf Mac OS Yosemite).Warum wird createServer() als keine Funktion betrachtet?

hier ist ein Beispielcode:

/// <reference path="typings/node/node.d.ts" /> 
/// <reference path="typings/express/express.d.ts" /> 

var express = require('express'); 
var app = express.createServer(); 
app.get('/', function (req, res) { 
    res.send('hi'); 
}) 

app.listen(8000); 

und hier sind die Fehler, die ich bin immer:

Abeds-MacBook-Pro:myNode AZ$ node twitter.js 
/Users/AZ/Desktop/myNode/twitter.js:5 
var app = express.createServer(); 
       ^

TypeError: express.createServer is not a function 
    at Object.<anonymous> (/Users/AZ/Desktop/myNode/twitter.js:5:19) 
    at Module._compile (module.js:397:26) 
    at Object.Module._extensions..js (module.js:404:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 
    at Function.Module.runMain (module.js:429:10) 
    at startup (node.js:139:18) 
    at node.js:999:3 

ich ein bisschen recherchiert und festgestellt, dass createServer() ist veraltet. Ich lese, dass ich die Version irgendwo in meiner Anwendung ändern muss.

Here is my application folder

Anmerkung: Ich habe eine andere Anwendung rein Node.js verwenden und createServer() funktioniert ohne Fehler zusammen mit dem Intellisence.

EDIT: in meiner anderen Anwendung habe ich stattdessen require('net') verwendet.

Ich änderte meinen Code auf die folgenden:

var express = require('express') 
    , http = require('http'); 

    var app = express(); 
    var server = http.createServer(app); 
    console.log('Listening on port 8000') 
    app.get('/', function (req, res) { 
     res.send('hi'); 
    }) 

    app.listen(8000) 

Das Problem, das ich jetzt habe, ist, dass res.send('hi'); noch nicht erreicht wurde, auch bekannt als, ich kann nicht an den Client senden.

EDIT 2:

Ich habe versucht, den folgenden Code in eine der Antworten zur Verfügung gestellt:

const express = require('express'); 
const http = require('http'); 

const app = express(); 
const server = http.createServer(app).listen(8080, function(err) { 
    if (err) { 
    console.log(err); 
    } else { 
    const host = server.address().address; 
    const port = server.address().port; 
    console.log(`Server listening on ${host}:${port}`); 
    } 
}); 
app.get('/', function (req, res) { 
    res.send('hi'); 
}) 

res.send('hi'); immer noch nicht funktioniert, es ist auch nicht einen Fehler liefern.

+0

Nicht sicher, ob es hilft, aber ich verwende immer 'var app = express()' anstelle von 'var app = express.createServer()'. –

+0

@JoachimIsaksson erstellt dies einen Server? – abedzantout

+0

Immer davon als das Erstellen der Anwendung, aber ja, es erstellt ein Objekt, das Sie aufrufen können, genau wie Sie es tun. Wenn Sie nur die Zeile ersetzen, wird der Beispielcode ausgeführt. –

Antwort

5

createServer ist eine Funktion der http so soll es sein:

const express = require('express'); 
const http = require('http'); 

const app = express(); 
app.get('/', function (req, res) { 
    res.send('hi'); 
}); 

const server = http.createServer(app).listen(8080, function(err) { 
    if (err) { 
    console.log(err); 
    } else { 
    const host = server.address().address; 
    const port = server.address().port; 
    console.log(`Server listening on ${host}:${port}`); 
    } 
}); 

P. S. Die Installation von express global ist eine schlechte Idee

+0

okay, so sind die Fehler weg, aber ich kann nichts an den Client senden. res.send ('hi'); wurde nicht erreicht – abedzantout

+0

Welchen Port hört der Server zu? Auf welchen Port weisen Sie den Client hin? – krl

+0

Ich habe die Ports in Ihrem Beispiel repariert, der Server ist angeblich hoch, aber ich kann immer noch nicht senden – abedzantout

Verwandte Themen