Nodejs Express - 为什么不赢得我的静态文件?

时间:2017-03-19 20:29:49

标签: node.js express routing

我一直在寻找各种各样的帖子而且无法理解我的错误。无论我做什么,我的css文件都没有被提供。有谁知道为什么?

测试/服务器/ app.js:

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

            app.use(express.static(path.join(__dirname, 'public')));
            app.use(express.static(path.join(__dirname, 'browser')));
            var PORT = process.env.PORT || 1337;
            app.listen(PORT, function() {
                console.log('Server is listening!');
            });

测试/浏览器/ index.html中:

                

            <head>
                <base href="/" />
                <title>Test</title>
                <link rel="stylesheet" type="text/css" href="public/style.css" />
                <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script>

                <script src="app.js"></script>
                <script src="js/app.controller.js"></script>
            </head>

            <body>
                <p>hello world</p>

            </body>
            </html>

我的css文件位于test / public / style.css

1 个答案:

答案 0 :(得分:0)

您的应用代码可以在test/server/中找到,这意味着path.join(__dirname, 'public')将产生test/server/public的绝对路径值,而path.join(__dirname, '..', 'public')` 不是您的CSS文件所在的位置。< / p>

相反,你想要使用它:

test/public/

这会使它指向test/public/

然而,这只是部分解决了这个问题,因为你也告诉Express /style.css是静态资源的根目录,这意味着你的样式表的URL是public/style.css,而不是{{1 }}

如果你想保留public前缀(你可能会这样做),你需要使用它:

app.use('/public', express.static(path.join(__dirname, '..', 'public')));

在HTML中,请务必使用绝对路径:

<link rel="stylesheet" type="text/css" href="/public/style.css" />