繁体   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