我试图为两个路由'/'和"/test"发送静态HTML文件。它适用于'/'路线,但不是'/test'/
我正在得到以下错误:
TypeError: path must be absolute or specify root to res.sendFile
at ServerResponse.sendFile (E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibresponse.js:421:11)
at E:sairamjavascriptnodeNode middlewareindex.js:11:9
at Layer.handle [as handle_request] (E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibrouterlayer.js:95:5)
at next (E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibrouterroute.js:137:13)
at Route.dispatch (E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibrouterroute.js:112:3)
at Layer.handle [as handle_request] (E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibrouterlayer.js:95:5)
at E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibrouterindex.js:281:22
at Function.process_params (E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibrouterindex.js:335:12)
at next (E:sairamjavascriptnodeNode middlewarenode_modulesexpresslibrouterindex.js:275:10)
at SendStream.error (E:sairamjavascriptnodeNode middlewarenode_modulesserve-staticindex.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选项。假设它与节点应用程序源相同的目录。
,使用以下代码使用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});
})
在(感谢Saurabh Mistry的参考)
尝试以这种方式:
app.get(['/','test'], function(req,res){
res.sendFile(__dirname + '/public/'+ 'index.html');
});