[英]Why do I get an error when I serve a static file for two routes in node.js using sendFile() method
我試圖為兩個路由“ /”和“ / test”發送一個靜態的html文件。 它適用於“ /”路線,但不適用於“ / test” /
我收到以下錯誤:
TypeError: path must be absolute or specify root to res.sendFile
at ServerResponse.sendFile (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\response.js:421:11)
at E:\sairam\javascript\node\Node middleware\index.js:11:9
at Layer.handle [as handle_request] (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\layer.js:95:5)
at next (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\layer.js:95:5)
at E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\index.js:281:22
at Function.process_params (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\index.js:335:12)
at next (E:\sairam\javascript\node\Node middleware\node_modules\express\lib\router\index.js:275:10)
at SendStream.error (E:\sairam\javascript\node\Node middleware\node_modules\serve-static\index.js:121:7)
let express = require('express');
let app = express();
app.use(express.static('public'));
app.get('/', function(req,res){
res.sendFile('index.html');
res.end();
})
app.get('/test', function(req,res){
res.sendFile('index.html');
res.end();
})
app.listen(3000);
index.html文件位於公共文件夾中,該文件夾用作靜態容器。
如果要為res.sendFile使用相對路徑,則需要指定root選項。 假設它與Node應用程序源位於同一目錄中,請使用以下代碼來提供index.html
。
您可以使用__dirname獲取當前目錄。
app.get('/', function(req,res){
res.sendFile('index.html',{root:__dirname});
})
app.get('/test', function(req,res){
res.sendFile('index.html',{root:__dirname});
})
另請參考node.js TypeError:路徑必須是絕對路徑或為res.sendFile指定根目錄[無法解析JSON]
(謝謝Saurabh Mistry供參考)
嘗試這種方式:
app.get(['/','test'], function(req,res){
res.sendFile(__dirname + '/public/'+ 'index.html');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.