ExpressJS с html5mode при загрузке API не работает

0

Я пытаюсь удалить знак # по URL-адресу с помощью html5mode, указав провайдеру html5mode местоположения в true

$locationProvider.html5Mode(true);

Я также настроил файл server.js для обслуживания своих статических файлов и моего index.html, как показано ниже.

var express = require('express'),
    app = express(),
    mongoose = require('mongoose'),
    bodyParser = require('body-parser'),
    port = process.env.PORT || 8080; 

app.use('/app', express.static(__dirname + '/public/app'));
app.use('/assets', express.static(__dirname + '/public/assets'));
app.use('/libs', express.static(__dirname + '/public/libs'));

app.all('/*', function(req, res, next) {
    res.sendFile('/public/index.html', { root: __dirname });
});

app.use(bodyParser.json()); 

require('./app/routes.js')(app);

app.listen('8080');
console.log('The magic happens on port 8080');

На данный момент все отлично работает с localhost: 8080 на другую навигацию, например localhost: 8080/login, даже когда я обновил страницу, она все еще работает нормально.

Он не работает во время какого-либо заявления API-запроса. Ниже приведены мои маршруты.js

route.js

var mongoose = require('mongoose'),
    db = mongoose.createConnection('mongodb://127.0.0.1/database'),
    Role = require('./models/role.js')(db);
    User = require('./models/user.js')(db);

module.exports = function(app) {

    app.route('/api/user')
        .get(function(req, res, next) {
            User.find(function(err, user){
                 if(err)
                    res.json(err);
                res.json(user);
            });
        })
        .post(function(req, res, next) {
            var error_return = [{response:'User Existed'},{response:'Invalid Username or Password'},{response:'Server Error'}];

            if(req.body.type === "local"){
                var newUser = new User();
                newUser.first_name = req.body.first_name;
                newUser.last_name = req.body.last_name;
                newUser.email = req.body.email;
                newUser.password = newUser.generateHash(req.body.password);
                newUser.type = req.body.type;
                newUser.role = req.body.role;

                User.findOne({email: req.body.email}, function (err, user) {
                    if (err) {
                        res.json(error_return[2]); 
                        return;
                    }
                    if (!user){
                        newUser.save(function(error, result){
                            if(error)
                                res.json(error_return[2]);
                            res.json({response:result});
                        });
                        return;
                    }
                    res.json(error_return[0]);
                });
            }else if(req.body.type === "login"){
                User.findOne({email: req.body.email}, function (err, user) {
                    if (err) {
                        res.json(error_return[2]); 
                        return;
                    }
                    if (!user){
                        res.json(error_return[1]);
                        return;
                    }
                    if (!user.validPassword(req.body.password)){
                        res.json(error_return[1]);
                        return;
                    }
                    res.json({response:user});
                });
            }



        });

};

Раньше перед включением html5mode мои файлы требовали ("./app/routes.js") (приложение); работает плавно, после включения, его даже не вызывают. Я что-то пропустил в своем коде?

Теги:
express

1 ответ

0
Лучший ответ

Все ваши запросы собираются в public/index.html прямо сейчас.

Измените свой код, чтобы /api/ запросы могли перейти на маршруты

app.use('/api', bodyParser.json(), require('./app/routes.js')); 

app.use('/app', express.static(__dirname + '/public/app'));
app.use('/assets', express.static(__dirname + '/public/assets'));
app.use('/libs', express.static(__dirname + '/public/libs'));

app.all('/*', function(req, res, next) {
    res.sendFile('/public/index.html', { root: __dirname });
});

app.listen('8080');
console.log('The magic happens on port 8080');

routes.js

var mongoose = require('mongoose'),
    db = mongoose.createConnection('mongodb://127.0.0.1/database'),
    Role = require('./models/role.js')(db),
    User = require('./models/user.js')(db),
    router = require('express').Router();

module.exports = router;

router.route('/user')
    .get(function (req, res, next) {
    User.find(function (err, user) {
        if (err) res.json(err);
        res.json(user);
    });
})
    .post(function (req, res, next) {
    var error_return = [{
        response: 'User Existed'
    }, {
        response: 'Invalid Username or Password'
    }, {
        response: 'Server Error'
    }];

    if (req.body.type === "local") {
        var newUser = new User();
        newUser.first_name = req.body.first_name;
        newUser.last_name = req.body.last_name;
        newUser.email = req.body.email;
        newUser.password = newUser.generateHash(req.body.password);
        newUser.type = req.body.type;
        newUser.role = req.body.role;

        User.findOne({
            email: req.body.email
        }, function (err, user) {
            if (err) {
                res.json(error_return[2]);
                return;
            }
            if (!user) {
                newUser.save(function (error, result) {
                    if (error) res.json(error_return[2]);
                    res.json({
                        response: result
                    });
                });
                return;
            }
            res.json(error_return[0]);
        });
    } else if (req.body.type === "login") {
        User.findOne({
            email: req.body.email
        }, function (err, user) {
            if (err) {
                res.json(error_return[2]);
                return;
            }
            if (!user) {
                res.json(error_return[1]);
                return;
            }
            if (!user.validPassword(req.body.password)) {
                res.json(error_return[1]);
                return;
            }
            res.json({
                response: user
            });
        });
    }



});
  • 0
    Привет, я полагаю, что после того, как я разрешу / api / request перейти к маршрутам, я буду менять свой маршрут route.js на / user / из моего кода выше?
  • 0
    да, ваши маршруты в route.js должны измениться с /api/user на /user
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню