Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript restify.serveStatic不处理默认文档_Javascript_Node.js_Rest_Restify - Fatal编程技术网

Javascript restify.serveStatic不处理默认文档

Javascript restify.serveStatic不处理默认文档,javascript,node.js,rest,restify,Javascript,Node.js,Rest,Restify,我有一个基于node和restify插件用javascript编写的REST应用程序 我设置了一些REST功能: var server = restify.createServer(); server.use(restify.bodyParser()); server.get('/person/:id', getPerson); server.get('/group/:id', getGroup); 我还想为一些静态文件提供服务,我希望它们可以从http://server/admin/ 我有

我有一个基于node和restify插件用javascript编写的REST应用程序

我设置了一些REST功能:

var server = restify.createServer();
server.use(restify.bodyParser());
server.get('/person/:id', getPerson);
server.get('/group/:id', getGroup); 
我还想为一些静态文件提供服务,我希望它们可以从
http://server/admin/

我有以下源代码使之成为可能:

server.get(/\/admin\/?.*/, restify.serveStatic({directory: '/var/www/node/app/html/', default: 'index.html'}));
/var/www/node/app/html/包含一个名为“admin”的文件夹,该文件夹包含一个名为index的文件。下面是文件夹结构:

html
└── admin
    ├── img
    │   ├── icon1.png
    │   ├── icon2.png
    │   ├── icon3.png
    └── index.html
如果我尝试访问
http://server/admin/
我将得到以下错误:

{"code":"ResourceNotFound","message":"/admin/"}
以下路径工作正常
http://server/admin/index.html
。我还可以访问
http://server/admin/img/icon1.png

总而言之,serveStatic的默认设置似乎存在问题

我使用的是restify 2.6.0,我知道有更新的版本可用,但由于其他一些内容在以后的restify版本上发生了更改,我目前无法升级。

尝试以下解决方法:

var restify = require("restify");

var server = restify.createServer(); // create server

var defaultDoc = "index.html"; // your default document

server.pre(restify.pre.sanitizePath()); // sanitize paths (e.g. "/admin/" will result in "/admin")
server.use(restify.bodyParser()); // body parser

// route "/admin" requests to "/admin/index.html"
server.use(function(req, res, next){
    req.url = (req.url === "/admin" ? "/admin/" + defaultDoc : req.url);
    return next();
});

// your routes...
server.get("/person/:id", getPerson);
server.get("/group/:id", getGroup); 

// route for static files
server.get(/\/admin\/?.*/, restify.serveStatic({
    "default":   defaultDoc,
    "directory": "/var/www/node/app/html"
}));

server.listen(8080, "0.0.0.0");