使用Restify提供静态内容

时间:2015-08-14 19:09:44

标签: node.js restify

我试图使用Restify提供静态文件而没有运气。我在网上搜索了包括restify网站在内,到目前为止我发现的解决方案都没有找到"资源未找到"错误我得到了。这是我的代码 -

server.get(/.*/, restify.serveStatic({
   'directory': 'public',
   'default': 'test.csv'
}));

1 个答案:

答案 0 :(得分:-1)

首先,您需要查看文件夹结构。 restify结合了您在使用serveStatic构建文件路径以从中提供文件时指定的目录和路径路径。

假设您的项目位于/project/test

并且包含启动服务器server.listen()的模块的文件名为app.js,位于/project/test/lib

您将公开内容放在/project/test/public

所以现在你有一个看起来像

的结构
  • /lib
    • app.js
  • /public
    • test.csv
问题是如果你在app.js

中添加这样的静态路由
server.get(/\/public\/?.*/, restify.serveStatic({
   'directory': __dirname,
   'default': 'test.csv'
}));

__dirname变量返回/project/test/lib

所以正在寻找/project/test/lib/public中没有内容的http://domain.com/public的内容

您需要将/public移至/lib才能使其正常工作

如果你想保持这个相同的文件夹结构,你需要做类似的事情

server.get(/\/public\/?.*/, restify.serveStatic({
   'directory': __dirname.replace('/lib', ''),
   'default': 'test.csv'
}));

以便directory的值现在为/project/test,并且路线将在/project/test/public中查找静态内容。