[英]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.