2015-09-12 2 views
0

У меня есть этот простой сервер, и когда я перехожу на localhost: 3000, я получаю «Can not GET /». I t терпит неудачу, когда я пытаюсь позвонить и зарегистрироваться. Есть идеи? благодаряпростой сервер узла возвращает «Can not GET /»

var express = require('express'); 
var gcm = require('node-gcm'); 
var apn = require('apn'); 

var app = express(); 
var device_token; 

/* 
, function(){ 
var host = server.address().address; 
var port = server.address().port; 
console.log(port, host); 
} 
*/ 
app.listen(3000); 

app.use(function(req, res, next){ 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.post('/register', function(req, res){ 
    device_token = req.body.device_token; 
    console.log('device token received'); 
    console.log(device_token); 

    res.send('ok'); 
}); 
+0

Я ничего не знаю об узле js express, но их документация показывает вызов listen() после определения обработчиков - работает ли это, если вы это сделаете? –

+0

, похоже, не имеет значения. –

ответ

1

У вас нет заданного маршрута для /. /register не работает, потому что у вас есть app.post, который принимает только запросы POST. Если вы хотите GET запрос /register на работу, добавить этот кусок кода:

app.get('/register', function(req, res) { 
    res.send("It works!"); 
}); 
+0

Могу я определить app.get ('/'), а затем определить app.post ('/ register' ...? –

+0

Уверен, что вы можете. Неважно, в каком порядке вы ставите различные маршруты, если вы не используете 'next'. – Howl

2

Переход на страницу в вашем браузере является GET запрос. Вы только определили обработчик для POST запроса на маршрут /register:

app.post('/register', function(req, res){ 
    device_token = req.body.device_token; 
    console.log('device token received'); 
    console.log(device_token); 

    res.send('ok'); 
}); 

Вы не определили любую вещь для / маршрута. Поэтому, когда вы переходите к любому из них, он по праву выбрасывает Cannot GET, потому что сам этот маршрут не определен, то есть для /, или метод GET10 для этого маршрута не определен, т.е. для /register.

Вы можете позволить GET запрос на корневой URL (/) с:

app.get('/', function(req, res){ 
    res.send('Hello!') 
}) 

Для /register маршрута, вы не должны использовать GET запрос, потому что вам нужно отправить информацию в теле запроса на самом деле зарегистрируйте пользователя. (Разрешено только пост-запросы).

Вы правильно настроили его. Вы просто не можете просмотреть его в браузере. Проверьте его с помощью postman или закрутите, чтобы увидеть, работает ли он.

+0

Да, это имеет смысл. Однако, когда я смотрю в свою консоль, я вижу: Не удалось загрузить ресурс http: // localhost: 3000/register –

+0

@BillPope вы не можете загрузить маршрут сервера на клиенте Вы можете загружать только файлы на клиенте. То, почему вы видите, не загрузило ресурс, потому что там нечего загружать. Вы должны размещать на маршруте сервера что-то вроде: '$ .ajax ('/ register', данные) ' – agconti

+0

Я пробовал это в почтальоне, и эта часть не работает: device_token = req.body.device_token; –

Смежные вопросы