角度params和表达命中错误的请求url

时间:2016-03-30 05:14:45

标签: javascript angularjs node.js express

随时我在任何角度路线上添加一个参数或查询,我的浏览器请求会将该参数添加到我的css文件的url请求中。

我正在使用html5mode true(漂亮的网址)

.state('profile', {
    url: "/profile/:steamId",
    templateUrl: "app/profile/profile.html",
    controller: "ProfileCtrl",
    controllerAs: "profile",
    data: {
        contentPages: 1
    }
});

$locationProvider.html5Mode(true);

我的角色服务

    getProfile:function(steamId){
        var self = this;
        return $http.get('api/user/'+steamId).then(function(response){
            $log.debug('getProfile', response.data);
            return response.data;
        }, function(err){
            $log.error('Error user', err);
        });
    },

并在我的服务器中

var express = require('express');
var app = express();

var bodyParser = require('body-parser');

// Launch ======================================================================

var server = app.listen(8000, function(){
    logger.info('The dagger flies at 8000');
});

// Configuration ======================================================================

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

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

// Routes ======================================================================

var users = require('./routes/users.route')(passport, logger);

// Middleware ======================================================================

app.use('/api/users', users);

app.get('/*', function(req, res, next) {
    res.sendFile('index.html', { root: 'public' });
});

我的index.html已设置为此

<link rel="stylesheet" href="builds/style.css"/>

通常情况下,当我在localhost:8000 / profile上时,我会在网络标签中看到类似的内容

http://localhost:8000/builds/style.css

但是当我添加像这样的参数时

localhost:8000/profile/13456 

在我的网络标签中,我看到了这个

http://localhost:8000/profile/builds/style.css

因此有一堆没有样式的HTML代码。

我该如何解决这个问题?我尝试过使用快速静态中间件,但没有成功。

1 个答案:

答案 0 :(得分:2)

链接CSS或JavaScript与您当前的目录相关。要解决此问题,请在路径前添加/以将其作为绝对路径引用:

<link rel="stylesheet" href="/builds/style.css"/>