簡體   English   中英

Nodejs Express-為什么不提供我的靜態文件?

[英]Nodejs Express - Why won't my static file be served?

我一直在尋找各種各樣的帖子,只是無法理解我的錯誤。 無論我做什么,我的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中

您的應用程序代碼可以在test/server/ ,這意味着path.join(__dirname, 'public')將產生( test/server/public的絕對路徑值) test/server/public ,而不是CSS文件所在的位置。

相反,您想使用以下代碼:

path.join(__dirname, '..', 'public')`

這將使其指向test/public/

但是,這只能部分解決問題,因為您還告訴Express, test/public/是靜態資源的根目錄,這意味着樣式表的URL是/style.css ,而不是public/style.css

如果要保留public前綴(您可能會這樣做),則需要使用以下命令:

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

在HTML中,請確保使用絕對路徑:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM