5

Zainstalowałem ekspresowo na całym świecie i npm zainstalowałem moją aplikację ekspresową, ale ani intellisence, ani aplikacja nie działa (używam visual studio code na Mac OS Yosemite).dlaczego funkcja createServer() nie jest funkcją?

tutaj jest przykładowy kod:

/// <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); 

i tu są błędy Dostaję:

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 

badałem trochę i okazało się, że createServer() została zaniechana. Czytałem, że muszę zmienić wersję gdzieś w mojej aplikacji.

Here is my application folder

Uwaga: zrobiłem inną aplikację za pomocą czysto node.js i createServer() nie działa bez błędu wraz z intellisence.

EDYTOWANIE: w mojej drugiej aplikacji użyłem zamiast tego require('net').

zmodyfikowałem mój kod do następujących:

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) 

Problem mam teraz jest, że res.send('hi'); nie został osiągnięty, aka, nie mogę wysłać do klienta.

EDIT 2:

Próbowałem następujący kod podany w jednej z odpowiedzi:

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'); nadal nie działa, ani nie stanowią błędu.

+0

Nie jestem pewien, czy to pomaga, ale zawsze używam 'var app = express()' zamiast 'var app = express.createServer()'. –

+0

@JoachimIsaksson Czy to tworzy serwer? – abedzantout

+0

Zawsze jako tworzenie aplikacji, ale tak, tworzy obiekt, który można wywołać 'get' tak, jak robisz. Po prostu zastąpienie linii powoduje uruchomienie przykładowego kodu. –

Odpowiedz

5

createServer jest funkcją http tak powinno być:

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}`); 
    } 
}); 

PS: Instalowanie globalnej express jest złym pomysłem

+0

w porządku, więc błędy zniknęły, ale nie mogę wysłać do klienta niczego. res.send ("cześć"); nie został osiągnięty – abedzantout

+0

Jaki port słucha serwer? Jakiego portu kierujesz klienta? – krl

+0

Naprawiłem porty w twoim przykładzie, serwer jest podobno w górze, ale nadal nie mogę wysłać – abedzantout