Node.js Express: TypeError: object 不是函数



当我运行以下代码时:

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 ,并且我已经快速安装。错误从何而来?

错误应该在以下行:

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

你为什么要用这个:

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

但是,您的代码在我的节点上完美运行.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')
});

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

最新更新