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