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

Node.js 在Hapi.js中提供静态文件时,如何确保发送正确的mime类型?,node.js,mime-types,hapijs,Node.js,Mime Types,Hapijs,我们正在尝试在我们的Hapi.JS项目中提供静态文件(JS/CSS/etc),需要确认我们得到了正确的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 }); s

我们正在尝试在我们的Hapi.JS项目中提供静态文件(JS/CSS/etc),需要确认我们得到了正确的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>
根据文件:

在浏览器中访问url:我们会看到:

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

console.log('hello (should print in the console)');
我们看到:

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

注:
  • 如果要帮助调试,请在GitHub上编写代码:
  • Node.js版本:v0.12.1
  • Hapi.js版本:8.2.0
  • 运行时使用:
    节点示例/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;
    

提前感谢您的帮助

我看这里没有问题。Hapi为静态文件提供正确的mime类型(应用程序/javascript)。您可以在curl的输出中看到,也可以在浏览器中看到:

当您访问并打开控制台时,可以看到执行了
console.log


在twitter上得到了一些回复。mime类型正确。请尝试使用Hapi在文档中引用的mimos模块。Good shout@BingeBoy将使用mimos-下次我们需要识别mime类型时。谢谢