Angular NgRoute“/”有效,但其余的没有?

时间:2016-03-11 22:49:28

标签: javascript angularjs node.js express url-routing

我有一个在MEAN堆栈上运行的应用程序,我似乎无法获得除“/”之外的任何角度路径。我已尝试使用ng-Route和ui-router,并且两者都继续发送除“/”之外的任何内容(例如/ contacts或/ portfolio_item / 4)回到“/".

这是app.js:

// using the express library in variable express
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

// specify that app is a new express application
var app = express();
app.use('/javascripts', express.static(__dirname + '/public/javascripts'));
app.use('/images', express.static(__dirname + '/public/images'));
app.use('/stylesheets', express.static(__dirname + '/public/stylesheets'));
app.use('/pages', express.static(__dirname + '/public/pages'));
app.use('/partials', express.static(__dirname + '/views/partials'));
app.use('/portfolio.json', express.static(__dirname + 'portfolio.json'));

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

这是angularapp.js:

var myApp = angular.module('myportfolio', ['ngRoute'])

myApp.config(function($routeProvider){
        $routeProvider
        .when('/', {
          templateUrl: '/pages/home.html',
          controller: 'mainController'
        })
        .when('/portfolio_item/:item_number', {
          templateUrl: '/pages/item.html',
          controller: 'portfolioController'
        })
        .when('/contacts', {
          templateUrl: '/pages/contact.html',
          controller: 'contactController'
        })
        .otherwise({ redirectTo: '/' });

无论我做什么,/ portfolio_item / 5和/ contacts都继续向我展示/pages/home.html ...我很奇怪只有索引可以正常工作。当我删除“.when('/',{”部分时,它只会向我显示任何网址都没有视图的布局。

我正在开发C9环境并运行Node服务器,如果这有所不同?

1 个答案:

答案 0 :(得分:1)

如果您检查浏览器控制台,则会发现此格式的错误:

  

未捕获的SyntaxError:意外的标记<

发生错误是因为服务器未提供静态文件。 express.static被用作服务器上路由的中间件。

要纠正此问题,您需要包含以下行:

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

这将提供公用文件夹中的所有静态文件。