使用hapi

时间:2015-11-01 12:26:39

标签: node.js hapijs

我已经完成了http://hapijs.com/tutorials/serving-files

但它并没有帮助我。

我在项目根目录的静态目录中有一个文件a.js

我已将relativePath配置为项目根目录中inert插件的粘合配置。

        plugins: {
            'vision': {},
            'inert': {
                routes: {
                    files: {
                        relativeTo: Path.join(__dirname, 'static')
                    }
                }
            },
            'visionary': {
                engines: {
             // other plugins

我的服务器路由如下:

{
    method: 'GET',
    path: '/a.js',
    handler: {
        file : 'a.js'
    }
}

但是当我尝试访问http://localhost:3000/a.js时,会抛出404错误。

我错过了什么?

3 个答案:

答案 0 :(得分:1)

注册inert插件是正确的方法,允许您提供静态文件。

您有多个选项可以为a.js文件提供服务,例如使用通配符路由参数为动态方法提供各种JS文件。在handler中,您需要设置JS目录的路径,而惰性将搜索该文件夹中的给定file

server.route({  
  method: 'GET',
  path: '/js/{file*}',
  handler: {
    directory: { 
      path: 'public/js'
    }
  }
})

您还可以指定JS文件的静态路由,并按照以下方式提供:

server.route({  
  method: 'GET',
  path: '/mylocaljavascript.js',
  handler: function (request, reply) {
    // reply.file() expects the file path as parameter
    reply.file('../path/to/my/localjavascript.js')
  }
})

希望有所帮助!

如果您想了解有关提供静态文件的更多信息:https://futurestud.io/tutorials/hapi-how-to-serve-static-files-images-js-etc

答案 1 :(得分:1)

要提供目录,您需要像这样设置路线:

{
 path: '/{param*}',
 method: 'GET',
 config: {
  handler: {
   directory: {
     path: path.resolve('directory_path')
   }
  }
 }
}

要提供静态文件,您可以这样做:

{
 path: '/your_path',
 method: 'GET',
 config: {
  handler: function(request, reply) {
   return reply.file('your_pfile_path');
  }
 }
}

不要忘记在server.js文件中添加惰性需求并注册它。

var Inert = require('inert');
server.register(Inert, () => {});

答案 2 :(得分:0)

您需要将服务路线的代码更改为以下

server.route({
    method: 'GET',
    path: '/a.js',
    handler: function (request, reply) {
        reply.file(a.js');
    }
});