ExpressJS + AngularJS одна страница без шаблона страница не найдена (404)

0

Мое приложение не загружает шаблоны в ng-view внутри index.thml. Я дал свой код здесь, потому что я потерян.

app.js

    var express = require('express');
    var app =  express();
    var path = require('path');
    var bodyParser = require('body-parser');

    // var $ = require('jquery');
    // global.jQuery = $;
    // var bootstrap = require('bootstrap');
    app.use(express.static(path.join(__dirname, 'public')));

    app.set('views', __dirname + 'views');
    app.set('view engine', 'html');

    var routes = require('./routes');

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({
        extended: true
    }));

    app.get('/', function(req, res) {
      res.sendFile(__dirname + "/public/views/index.html"); 
    });

    app.set('port', process.env.PORT || 3000);

    var server = app.listen(app.get('port'), function() {
        console.log('Started Success http://localhost:' + server.address().port);
    });

И угловой маршрут

angular.module('geradorContrato', ['ngRoute'])
.config(function($routeProvider, $locationProvider) {

$locationProvider.html5Mode(true);

$routeProvider

.when('/contrato', {
    templateUrl: '/public/views/contrato.html',
    controller: 'ContratoController'
})

.when('/contratante', {
    templateUrl: '/public/views/contratante.html',
    controller: 'ContratanteController'
})

.when('/contratada', {
    templateUrl: '/public/views/contratada.html',
    controller: 'ContratadaController'
})

.when('/bemvindo', {
    templateUrl: 'public/views/bemVindo.html',
});

});

Но когда я получаю доступ к http://localhost: 3000/#/bemvindo. Ошибка загрузки страницы index.html, но ngview не загружается и показывается сообщение. Невозможно GET/public/views/bemVindo.html в консольную сеть хром

Ниже мой index.html

    <!DOCTYPE html>
<html ng-app="geradorContrato">
    <head>
        <meta charset="UTF-8">
        <base href="/">
        <link rel='stylesheet' href='/stylesheets/dist/css/bootstrap-theme.css'>
        <link rel='stylesheet' href='/stylesheets/dist/css/bootstrap.css'>
        <link rel="stylesheet" type="text/css" href="/stylesheets/mainStyle.css">

        <script src="/javascript/lib/angular.js"></script>
        <script src="/javascript/lib/angular-route.js"></script>
        <script src="/javascript/lib/jquery.js"></script>
        <script src="/javascript/lib/bootstrap.js"></script>
         <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-animate.js"></script>
        <script src="/javascript/main.js"></script>
        <script src="/javascript/ContratoController.js"></script>

        <title>Cadastro</title>
    <head>
    <body>
        <div class="container">
            <ng-view></ng-view>
        </div>
    </body>
    </html>

и ниже моя страница простая bemVindo.html

OLÁ SEJA VEM VINDO!

Это базовая структура моего приложения

Состав

Извините, ребята, если вы что-то не поняли, скажите мне, пожалуйста, pl

Извините за мой английский

Предложения

Deek:

var express = require('express');
var app =  express();
var path = require('path');
var bodyParser = require('body-parser');

app.use(express.static(path.join(__dirname, 'public')));

var routes = require('./routes');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));

app.use('/', express.static(path.join(__dirname, '/public/views/index.html')));

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
    console.log('Started Success http://localhost:' + server.address().port);
});

Ошибка Невозможно GET/

  • 0
    удалите public из templateUrls и посмотрите, работает ли это /public/views/contratante.html' to /views/contratante.html'
  • 0
    Я стараюсь, но не работаю. Это то же самое
Показать ещё 1 комментарий

2 ответа

0

Избавиться от:

app.set('views', __dirname + 'views');
app.set('view engine', 'html');

Не нужно.... view engine html по умолчанию. Папка Views не используется.

EDIT: удалите это тоже:

app.use(express.static(path.join(__dirname, 'public')));

Измените это:

app.get('/', function(req, res) {
  res.sendFile(__dirname + "/public/views/index.html"); 
});

К этому:

app.use('/', express.static(path.join(__dirname, '/public/views/index.html')));

Сообщите, что это статический каталог, в котором находятся html и поддерживающие файлы.

Express будет рассматривать его как обычный html-каталог и попытаться найти индексный файл. Из вашего индексного файла угловой захват маршрутизации.

Если вы хотите использовать экспресс и шаблоны для маршрутизации, то, как вы это сделали, лучше всего.

Вы устанавливаете папку представлений, если хотите, чтобы экспресс загружал файлы шаблонов, но у вас их нет.

Вы можете смешивать и сочетать с угловыми.

  • 0
    Я пытаюсь, но приложение не находит root. Когда я получаю доступ к localhost: 3000 / «Cannot GET /»
  • 0
    Я забыл app.use ('/', .... я это исправил
Показать ещё 6 комментариев
0

путь, который вы указали, должен быть неправильным, проверьте путь, в котором находится ваш файл, попробуйте отключить путь в консоли javascript и предоставить правильный путь. "Невозможно GET/public/views/bemVindo.html" означает, что файл bemVindo.html отсутствует в папке /public/views. Он не может найти файл, следовательно, показывая эту ошибку.

Ещё вопросы

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