Angular NgRoute“/”有效但其余的无效?
Angular NgRoute "/" works but the rest don't?
我在 MEAN 堆栈上有一个应用程序 运行,但我似乎无法使用除“/”以外的任何 angular 路由。我已经用 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('/', {" 部分时,它只会向我显示布局,而根本没有 URL.
视图
我在 C9 环境和 运行 Node 服务器上工作,如果这有什么不同?
如果您检查您的浏览器控制台,您应该会发现这种形式的错误:
Uncaught SyntaxError: Unexpected token <
发生错误是因为服务器未提供静态文件。 express.static
被用作服务器上路由的中间件。
要更正此问题,您需要包含以下行:
app.use(express.static(__dirname + '/public'));
这为 public 文件夹中的所有静态文件提供服务。
我在 MEAN 堆栈上有一个应用程序 运行,但我似乎无法使用除“/”以外的任何 angular 路由。我已经用 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('/', {" 部分时,它只会向我显示布局,而根本没有 URL.
视图我在 C9 环境和 运行 Node 服务器上工作,如果这有什么不同?
如果您检查您的浏览器控制台,您应该会发现这种形式的错误:
Uncaught SyntaxError: Unexpected token <
发生错误是因为服务器未提供静态文件。 express.static
被用作服务器上路由的中间件。
要更正此问题,您需要包含以下行:
app.use(express.static(__dirname + '/public'));
这为 public 文件夹中的所有静态文件提供服务。