javascript - ExpressJS 在 html5 模式上进行更深层次的 url 链接时呈现错误的静态路径

标签 javascript css angularjs node.js express

我正在尝试在我的网络应用程序中实现 html5mode。我正在使用 Angular 的 ui 路由器到达那里。客户端运行良好。每当我打开主网页(127.1.1.1:8080)时,它都会完美加载。单击链接到 (127.1.1.1:8080/admin/dashboard) 的按钮,它也可以完美加载。

刷新127.1.1.1:8080还是可以的。

刷新127.1.1.1:8080/admin/dashboard页面时出现问题。 它给出:

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://127.1.1.1:8080/admin/libs/components-font-awesome/css/font-awesome.min.css".
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://127.1.1.1:8080/admin/assets/css/style.css".

似乎是错误地获取了 css 样式。 路径http://127.1.1.1:8080/admin/assets/css/style.css路径错误,应该是http://127.1.1.1:8080/assets/css/style.css反而。我相信我必须重写 server.js 中的静态路径,而且我已经这样做了。我还缺少什么?

服务器.js

var express = require('express'),
    app = express(),
    mongoose = require('mongoose'),
    bodyParser = require('body-parser'),
    api = require('./app/routes'),
    port = process.env.PORT || 8080; 

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

app.post('/api/user', api.post);
app.all('*', function(req, res, next) {
    res.sendFile('/public/index.html', { root: __dirname });
});

app.use(bodyParser.json()); 

app.listen('8080');
console.log('The magic happens on port 8080');

app.config.js

angular
    .module('app')
    .config(config);

config.$inject = ['$urlRouterProvider','$stateProvider','$locationProvider'];

function config($urlRouterProvider,$stateProvider,$locationProvider) {
    $urlRouterProvider.otherwise('/');

    $stateProvider
    .state('home', {
        url:'/',
        templateUrl: 'app/home/home.html',
        controller: 'HomeController',
        controllerAs: 'vm'
    })
    .state('admin', {
        url:'/admin',
        templateUrl: 'app/admin/admin.html',
        controller: 'AdminController',
        resolve: {app: check_logged}
    })
    .state('admin.dashboard', {
        url: '/dashboard',
        template: 'I could sure use a drink right dashboad.'
    })
    .state('admin.product', {
        url: '/product',
        template: 'I could sure use a drink right product.'
    })

    $locationProvider.html5Mode({
        enabled: true
    });
}

index.html

    <head>
    <meta  http-equiv="content-type" content="text/html;" charset="UTF-8">
    <meta name="viewport" content="width=device-width">
    <link rel="stylesheet" href="/libs/materialize/dist/css/materialize.min.css"></link>
    <link rel="stylesheet" href="/libs/components-font-awesome/css/font-awesome.min.css"></link>
    <link rel="stylesheet" href="/assets/css/style.css">
    <base href="/">
</head>

最佳答案

尝试将 CSS 中的 type 属性添加到 text/css 中,如下 -

 <link rel="stylesheet" type="text/css"  ref="/libs/materialize/dist/css/materialize.min.css">

该问题与 mime-type 有关。

关于javascript - ExpressJS 在 html5 模式上进行更深层次的 url 链接时呈现错误的静态路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34013605/

相关文章:

javascript - 如何将第 n 个子选择器与 jquery 子选择器一起使用?

javascript - 如何在复选框激活时禁用/启用 PayPal 按钮?

php - 关于从 MySQL 中获取 PHP 数据表的建议

javascript - 如何添加旧版本的 syntaxhighlighter

css - 如何使用 CSS 将 block 放置在 "second"屏幕的顶部?

html - 如何通过 '@' 或 '.' 等特定字符将电子邮件地址文本分解为表格单元格?

javascript - 如何通过添加/删除 Angular 输入来管理焦点/光标位置?

javascript - 在 Angular 应用程序之外使用 Angular 过滤器

javascript - 向 AngularJS 中的指令提供远程数据

javascript - 如何使用我的后端从客户端 JS 发送电子邮件