#node.js #express #nginx
#node.js #экспресс #nginx
Вопрос:
Я изучаю СРЕДНИЙ стек, поэтому начал с Node.js и сначала выразите. Я запускаю Nginx в Windows 10. Я установил последний узел. Версия NPM 3.10.3
, версия 6.7.0
узла и экспресс-версия 4.14.0
. Я сделал npm install express --save
, npm install mongoose --save
, npm install body-parser --save
, и создал server.js досье. Я node server
проверил свои источники и получил следующую ошибку:
C:nginxhtml >сервер узлов C:nginxhtmlserver.js:7 app.get('/', функция(req, res){ ^ Ошибка типа: app.get не является функцией в объекте. (C:nginxhtmlserver.js:7:5 ) в модуле._compile (module.js:556:32) в объекте.Module._extensions..js (module.js:565:10) в модуле.загрузка (module.js: 473:32) в tryModuleLoad (module.js: 432:12) в функции.Модуль._load (module.js:424:3) при запуске Module.runMain (module.js:590:10) при запуске (bootstrap_node.js:394:7) при запуске (bootstrap_node.js:149:9) в bootstrap_node.js:509:3 C:nginxhtml >
И код в моем server.js файл является:
var express = require('express');
var express = require('mongoose');
var express = require('body-parser');
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
app.listen(80);
Я не уверен, как приложение hello world может пойти не так. Я видел много tuts и кода с одним и тем же, но работающих для них. Даже официальное приложение Hello world от Express имеет тот же код.
Ответ №1:
попробуйте это
var express = require('express');
var mongoose= require('mongoose');
var bodyparser = require('body-parser');
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
app.listen(80);
Комментарии:
1. EADDRINUSE означает, что порт, 80 в данном случае, уже используется. Итак, вы можете просто изменить номер порта, выбрать большее число, например 3000 или 8080.
2. да, но 80 — это тот, на котором работает мой nginx. разве оба не должны быть одинаковыми? мне жаль, что я родом из php, поэтому не так много идей
3. @JackSlayer94 — Нет. Вы запускаете nginx на 80 и настраиваете его для пересылки на ваш node.js сервер на каком-то другом порту, и вы запускаете свой node.js сервер на этом другом номере порта. На любом заданном порту может прослушиваться только один серверный процесс.
Ответ №2:
Вам необходимо установить express
не expression
так, как показано ниже
npm install express --save
и тогда вам нравится играть
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var app = express();
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.get('/', function(req, res){
res.send('hello world');
});
app.post('/', function(req, res){
res.json({data: req.body});
});
app.listen(3000);
а затем попробуйте прослушать другой порт, который выше 1024, может быть 3000
или 8080
или что-нибудь еще, в противном случае вам нужно запустить cmd от имени администратора
Комментарии:
1. Я почти уверен, что они имели в виду Express, поскольку
expression
модуль не имеет версии 4.14.0.2. Я полагаю, @JackSlayer94 путается между выражением и выражением, иначе мы должны сообщить об ошибке в espression):
3. @JackSlayer94, который вы присвоили
body-parser
express
переменной, поэтому не работает, посмотрите обновленный код