我正在尝试使用angular.js在/ parent root周围进行路由,如果我正在使用锚链接等,则可以正常工作(也就是说纯粹来自angular处理的路由。例如,一个href为'/ parent /的链接但是,当我在url栏中输入它时或者当它已经在那个位置时刷新它时,它会生成一个错误,因为后端路由还没有完成。
因此我在express中尝试了一个catchall路由('/ 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')
});
Angular routing(我在视图中声明控制器)
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'
})
})
答案 0 :(得分:16)
这是新引入的“行为改变”(或错误)。
尝试使用基本标记:
<base href="/" />
答案 1 :(得分:6)
您也可以通过/parent
为您的JS / CSS服务:
... http://localhost:3000/parent/javascripts/jquery.js
^^^^^^^
因此,如果您在之前声明路由,则声明express.static
中间件,您的catch-all路由将处理所有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')
});