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.
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.
Nie jestem pewien, czy to pomaga, ale zawsze używam 'var app = express()' zamiast 'var app = express.createServer()'. –
@JoachimIsaksson Czy to tworzy serwer? – abedzantout
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. –