HTML-шаблоны AngularJS не работают в Nodejs / Expressjs

0

Я работаю над небольшим проектом AngularJS. Я использовал ui-router для маршрутизации различных html-шаблонов, которые отлично работают. Структура кода и папок показана ниже:

var app = angular.module('flapperNews', ['ui.router']);
app.config([
'$stateProvider',
'$urlRouterProvider',
function ($stateProvider, $urlRouterProvider) {
    $stateProvider
      .state('news', {
          url: '/news',
          templateUrl: 'news.html',
          controller: 'MainCtrl'
      })
    .state('posts', {
        url: '/posts/{id}',
        templateUrl: 'posts.html',
        controller: 'PostsCtrl'
    });

    $urlRouterProvider.otherwise('news');
}]);

Структура папок: Изображение 174551

Однако, когда я попытался установить их в Nodejs/Expressjs, он показывает ошибку: GET http://localhost: 3000/news.html 404 (не найдено)

Изображение 174551

Я уже поместил все html-шаблоны в папку представлений, как показано ниже, но не работает. Я новичок в NodeJS, кто-нибудь знает, что произошло? Огромное спасибо заранее!

  • 1
    Можете ли вы показать свой файл app.js ? в какой папке все ваши html файлы существуют?
Теги:

2 ответа

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

Поместите все ваши файлы HTML в public папку и получите доступ ко всем оттуда. Поскольку Angular не удалось получить, что страницы с views папки, так как на стороне сервера, что материал. Включение HTML файлов в public папку не является стандартом, но в основном используется при использовании Angular

Вы можете получить больше идей отсюда с ответом Jess

  • 0
    Спасибо вам большое! Оно работает! Я создал новую папку с именем templates в общей папке и изменил путь в angularApp на: templateUrl: '/templates/news.html'. Это сработало.
  • 0
    Рад помочь вам :)
Показать ещё 2 комментария
0

Я думаю, вам просто нужно /views/home.html в вашем templateUrl: /views/home.html templateUrl: и папка views должна находиться внутри вашего public каталога.

Я предполагаю, что у вас есть что-то близкое к app.use(express.static(path.join(__dirname, 'public'))); где-то? Это позволяет вам отображать статические файлы из public каталога.

  • 0
    большое спасибо! Логика верна, но после того, как я переместил папку представлений в общую папку, выдается сообщение об ошибке: Ошибка: не удалось найти представление «ошибка» в каталоге представлений ». В конце концов я создал новую папку с именем: templates в общедоступной папке и поместил все мои html-шаблоны в эту папку изменили угловой путь на templateUrl: '/templates/news.html' Наконец-то, это сработало! Спасибо большое!

Ещё вопросы

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