4

我正在尝试使用 /parent 根周围的 angular.js 进行路由,如果我使用锚链接等(也就是纯粹从 angular 处理的路由。例如,href 为“/parent/createstudent”的链接有效) . 但是,当我在 url 栏中键入它或当它已经在该位置时刷新它时,它会生成一个错误,因为后端路由尚未完成。

因此,我在 express 中尝试了一个包罗万象的路由('/parent/*'),但这会导致我的所有 js 和 css 都没有被读取的错误。有谁知道如何解决这个问题?

我的静态文件目录

public
  -> javascripts
      -> app.js
      -> angular.js
  -> stylesheets
  -> images

错误:

Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/parent/javascripts/jquery.js". home:1
Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/parent/javascripts/angular.js". home:1
Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/parent/javascripts/main.js". home:1
Uncaught SyntaxError: Unexpected token < jquery.js:1
Uncaught SyntaxError: Unexpected token < angular.js:1
Uncaught SyntaxError: Unexpected token < 

表达

app.get('/parent', function(req, res) {
  res.render('main')
});
app.get('/parent/*', function(req, res) {
  res.render('main')
});

角度路由(我在视图本身中声明控制器)

var app = angular.module('app', []).config(function($routeProvider, $locationProvider) {
  $locationProvider.html5Mode(true);
  $routeProvider.when('/parent/login', 
    {
      templateUrl: '../templates/login.html'
    }).
    when('/parent/home', 
    {
      templateUrl: '../templates/home.html'
    }).
    otherwise(
    {
      redirectTo: '/parent'
    })
})
4

2 回答 2

16

这是一个新引入的“行为改变”(或错误)。

尝试使用基本标签:

<base href="/" />
于 2013-06-08T12:50:01.933 回答
6

您还通过以下方式为您的 JS/CSS 提供服务/parent

... http://localhost:3000/parent/javascripts/jquery.js
                         ^^^^^^^

所以如果你在声明中间件之前express.static声明你的路由,你的包罗万象的路由将处理所有的 JS/CSS 请求。

您应该使用与此类似的设置:

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

// ...followed by your catch-all route (only one needed)
app.get('/parent*', function(req, res) {
  res.render('main')
});
于 2013-06-08T12:22:15.750 回答