在Hapi.js中提供静态文件时,我们如何确保发送正确的mime类型?

时间:2015-04-02 15:51:44

标签: node.js mime-types hapijs

我们正在 Hapi.js 项目中尝试提供静态(JS / CSS /等)文件,并需要确认我们是获得正确的Mime类型。

代码(简化)

实例/ staticfiles.js
var Path = require('path');
var Hapi = require('hapi');
var server  = new Hapi.Server();
var port    = process.env.PORT || 5000;

server.connection({ port: port });

server.views({
    engines: {
        html: require('handlebars')
    },
    path: Path.join(__dirname, 'views')
});

server.route([  
  { path: '/',
    method: 'GET',
    config: {
      auth: false,
      handler: function(request, reply) {
        reply.view("index");
      }
    }
  },
  {
    method: 'GET',
    path: '/public/{param*}',
    handler: {
        directory: {
            path: Path.normalize(__dirname + '/public')
        }
    }
  }
]);

server.start(function(){
  console.log('Static Server Listening on : http://127.0.0.1:' +port);
});

module.exports = server;
实例/视图/ index.html中
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Serving Static Content in Hapi.js 8.2</title>
  </head>
  <body>
    <h1> Open the Console...</h1>
    <script src="/public/hello.js"></script>
  </body>
</html>
例子/公/ hello.js
console.log('hello (should print in the console)');

根据文档文档:http://hapijs.com/tutorials/serving-files

访问浏览器中的网址: http://127.0.0.1:5000/public/hello.js 我们看到:

loading a js file prints the code in the browser - does not run

当我们curl -v http://127.0.0.1:5000/public/hello.js

时 我们看到了:

curl -v public/hello.js

这表明正确的内容类型正在发送给客户端。

注意:

谢谢 提前为您提供帮助!

1 个答案:

答案 0 :(得分:0)

我在这里看不到任何问题。 Hapi使用正确的mime类型(application / javascript)提供静态文件。你可以在curl的输出中看到这个,你也可以在浏览器中看到它:

enter image description here

当您访问http://127.0.0.1:5000/并打开控制台时,您会看到console.log已执行。

enter image description here