Проблема обновления Ui-роутера

0

Я настроил свой ui-router следующим образом:

app.config(function($stateProvider, $urlRouterProvider, $locationProvider) {

        $stateProvider
            .state('home', {
                url: "/home",
                templateUrl : 'home/home.html',
                controllerUrl: 'home/controller.js'
            })
            .state('blog', {
                url: "/blog",
                templateUrl : 'blogger/blog.html',
                controllerUrl: 'bloger/controller.js'
            })

        $locationProvider.html5Mode({
            enabled: true,
            requireBase: true
        });
    });

Код сервера:

var express = require('express');
var serveStatic = require('serve-static');

var server_port = 9000;

var server_ip_address = '127.0.0.1'

var app = express();

app.use(express.static('app'));

app.use(serveStatic('app', {'index': ['index.html', 'index.htm']}));

dirName = 'app';

options = {
  root: dirName,
  dotfiles: 'deny',
  headers: {
    'x-timestamp': Date.now(),
    'x-sent': true
  }
};

app.get('*', function(req, res) {
  return res.sendFile('index.html', options);
});

app.listen(server_port, server_ip_address, function () {
  console.log( "Listening on " + server_ip_address + ", server_port " + server_port)
});

Но всякий раз, когда я нажимаю Ctrl/Command + R (или обновляется), он говорит, что не может найти путь? Как я могу обойти эту проблему?

Структура папки: Views:./app/home/, app/blog/Basefile:./app/index.html Угловая UI-маршрутизация из:./app/base.js

  • 0
    Что вы подразумеваете под "не может найти путь?" Также вам может потребоваться указать состояние по умолчанию / резервное состояние.
  • 0
    "Не могу получить / домой"
Показать ещё 1 комментарий
Теги:
angular-ui-router
web

3 ответа

1

Проблема будет в настройках сервера. Угловое - это приложение Front Controller. Вам нужно, чтобы каждый запрос перенаправлялся на index.html/index.php на вашем сервере. Например, настройки htaccess в apache. Дополнительную информацию можно найти здесь: перенаправление htaccess для угловых маршрутов

  • 0
    Я добавил свой код сервера. Можете ли вы указать, где это идет не так?
  • 0
    Кроме того, если это проблема с сервером, то почему я не использовал ngRoute?
0

Вы можете использовать приведенный ниже код в приложении app.js и затем работать:

ОБНОВЛЕНО:

    /** Below code set the html as your default engine*/

   var fs = require('fs');
   app.engine('html',function(path,opt,fn){  //manishp
       fs.readFile(path,'utf-8',function(err,str){
          if(err) return str;
          return fn(null,str);
       });
  });


 app.get('*',function(req,res){
    res.render('<your_layout_file_or_basefile>');    
 });

Это в основном потому, что ваши маршруты AngularJS не являются актуальными страницами html. Например, если у вас есть маршрут в вашем угловом приложении для входа/входа. Этот URL-адрес прекрасно работает, если вы ссылаетесь на него из своего приложения, но если пользователь попытается перейти непосредственно на эту страницу, сервер вернет 404.

Это связано с тем, что режим AngularJS HTML5 использует API истории для ввода нового URL-адреса в ваш браузер. Да, для этого требуется дополнительная работа на стороне сервера, чтобы этот URL вернул правильный контент.

  • 0
    Выдает ошибку: не удается найти модуль «html» при обновлении.
  • 0
    Назовите свой индексный файл или файл макета, также вставьте свой код, который дает вам не найти ошибку модуля, потому что я использую вышеупомянутое решение, и оно работает для меня.
Показать ещё 4 комментария
0

Проблема с вашей стороны сервера, вы должны обрабатывать все маршруты в файле server.js. Например, здесь приведен фрагмент

router = settings.express.Router()
dirName = settings.path.resolve(__dirname, '..', '..');

options = {
  root: dirName + '/website/views',
  dotfiles: 'deny',
  headers: {
    'x-timestamp': Date.now(),
    'x-sent': true
  }
};

router.get('*', function(req, res) {
  return res.sendFile('index.html', options);
});
  • 0
    Я прошу прощения. Но что именно такое настройки?
  • 0
    Работает без настроек. Благодарю.

Ещё вопросы

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