Node.js Express:TypeError:对象不是函数

时间:2019-01-01 19:54:08

标签: javascript node.js express

当我运行以下代码时:

var app = require('express')();
var http = require('http').Server(app);

app.get('/', function(req, res){
    res.send('<h1>Hello world</h1>');
});

http.listen(3000, function(){
    console.log('listening on *:3000');
});

我收到以下错误:

/var/www/html/test.me/public_html/giftcard/index.js:1
rts, require, module, __filename, __dirname) { var app = require('express')();
                                                                           ^
TypeError: object is not a function
    at Object.<anonymous> (/var/www/html/test.me/public_html/giftcard/index.js:1:91)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

此错误是什么意思?表达的路径不正确吗?我有一个包含packages.jsonindex.js(上面的文件)和node_modules的目录,并且已经安装了Express。错误从哪里来?

3 个答案:

答案 0 :(得分:0)

您为什么要使用它:

var app = require('express')();
var http = require('http').Server(app);` 

您可以这样做:

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

app.get('/', function(req, res){
    res.send('<h1>Hello world</h1>');
});

app.listen(3000, function(){
    console.log('listening on *:3000');
});

但是,您的代码可以在我的node.js上完美运行。

var app = new require('express')();
var http = require('http').Server(app);

app.get('/', function(req, res){
    res.send('<h1>Hello world</h1>');
});

http.listen(3000, function() {
    console.log('listening on *:3000')
});

答案 1 :(得分:0)

错误应该在此行:

var http = require('http').Server(app);

对于您要执行的操作,您只需要express而没有http

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

app.get('/', function(req, res){
    res.send('<h1>Hello world</h1>');
});

app.listen(3000, () => console.log('listening on 3000'));

如果您还想使用http,请尝试使用以下语法:

const app = require('express')();
const server  = require('http').createServer(app);
server.listen(3000);

答案 2 :(得分:0)

因为我在Ubuntu 14.04上使用了nodejs模块来安装Node.js,所以我的版本已经过时。我使用nvm安装了最新版本的Node.js来解决错误。