Node.js Express: TypeError: объект не является функцией - PullRequest
0 голосов
/ 01 января 2019

Когда я запускаю следующий код:

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.json, index.js (файл выше) и node_modules, и я установил экспресс.Откуда исходит ошибка?

Ответы [ 3 ]

0 голосов
/ 01 января 2019

Ошибка должна быть в этой строке:

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);
0 голосов
/ 02 января 2019

Поскольку я использовал модуль nodejs в Ubuntu 14.04 для установки Node.js, у меня была устаревшая версия.Я использовал nvm для установки самой последней версии Node.js для устранения ошибок.

0 голосов
/ 01 января 2019

Почему вы используете это:

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')
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...