5

我安裝了express全球和npm安裝我的快車應用程序,但intellisence或應用程序都沒有工作(我在mac os優勝美地使用visual studio代碼)。爲什麼createServer()被認爲不是一個函數?

這裏是一個示例代碼:

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

,這裏是我得到的錯誤:

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 

我研究了一下,發現createServer()已被棄用。我讀到我需要在我的應用程序某處更改版本。

Here is my application folder

注:我沒有使用純粹的Node.js的其他應用程序,並createServer()與intellisence一起做的工作沒有任何錯誤。

編輯: 在我的其他應用程序中,我用require('net')來代替。

我修改我的代碼如下:

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) 

我現在的問題是,res.send('hi');還沒有達到,又名,我不能發送到客戶端。

編輯2:

我試圖在其中一個答案提供了以下代碼:

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');仍然不能正常工作,它也沒有提供錯誤。

+0

不確定是否有幫助,但我總是使用'var app = express()'而不是'var app = express.createServer()'。 –

+0

@JoachimIsaksson是否創建了一個服務器? – abedzantout

+0

總是把它當作創建應用程序的工具,但是,它創建了一個對象,您可以像調用「get」一樣調用它。只需更換該行就可以運行示例代碼。 –

回答

5

createServerhttp了一項功能,它應該是:

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

附:在全球安裝express是一個壞主意

+0

沒問題,所以錯誤消失了,但我無法向客戶端發送任何東西。 res.send( '喜');尚未達到 – abedzantout

+0

服務器偵聽的端口是什麼?你指向客戶端的端口是什麼? – krl

+0

我在你的例子中修復了端口,服務器據說起來了,但是我仍然不能發送 – abedzantout

相關問題