簡體   English   中英

使用sendFile()方法在node.js中為兩條路由提供靜態文件時,為什么會出錯?

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

這是我的app.js

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.

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