node.js中的头文件 – 套接口io资源解释为脚本,但是以MIMEtypes传递text / plain:

我是新来的node.js,我不明白如何工作。 我试图附加到我的项目fancybox在我的index.html,但它不起作用。 我正在使用c9.io工作区,所以它看起来像<script src="http://space.......c9.io/jquery.fancybox-1.3.4.js"></script> I仍然在控制台中得到相同的错误: socket io资源解释为脚本,但以MIMEtypes传递text / plain:

请问有没有人能解释我这个尽可能简单?

我的js文件

 var http = require("http"), express = require('express'), app = express(), server = app.listen(process.env.PORT), io = require('socket.io').listen(server) app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.sockets.on('connection', function (socket) { }); 

我认为你的问题的解决scheme是一个小的type="text/javascript" ,你应该添加到您的脚本标记,但这是一个低mimetypes:

以下是使用原始Nodej时设置标题的一些文本 。

使用Express时, 这也是一样的 。

这里是维基百科的mimetypes 。

我不是一个专家,但据我所知,每个从服务器发送到客户端(浏览器,大多数)的信息的文件夹或chuck带有这个基本上告诉浏览器如何处理文件/卡盘的MIMEtypes。您的浏览器即使没有收到头文件,也能够正确处理该文件+他足够聪明地通知您其他浏览器可能不那么聪明。

这是我如何写它:

 app.get('/',function(request,response){ response.set('Content-Type', 'text/html'); // 'text/html' => mime type response.sendfile(__dirname + 'index.html') } 

这里列出了很多mimetypes。 但我想你可以只是谷歌的东西像“{文件扩展名} MIMEtypes”和谷歌将竭诚为您服务。

或者,您可以使用这个小包来将response.set('Content-Type', 'text/html')改为response.set('Content-Type', mime.lookup(x)); – x是一个string,如“kuku.mpeg”,MIME将返回currect mimetype。 我用它来解决每个文件types都有很多子文件夹的插件。

HTTP标头是包含有关HTTP请求或响应的信息的字段。 它有助于服务器或客户端识别如何处理数据,无论是要接受的数据types,请求或响应的大小,请求的来源,是否caching数据等等。

在HTTP中,MIME头部会告诉客户端或服务器什么types的数据将被发送或接收。 您收到的错误消息可能意味着浏览器认为它将接收MIMEtypes的text/javascript但接收text/plain

 Resource interpreted as script but transferred with MIME type text/plain 

要解决此问题,请在发送脚本文件时指定内容types:

 app.get('/script.js', function(req, res) { res.set('Content-Type', 'text/javascript'); res.sendfile('./script.js'); }); 

请注意,HTTP头不是特定于Node.js,但是HTTP协议的一部分。