【发布时间】:2014-03-30 22:08:06
【问题描述】:
新手问题。我的浏览器抛出异常:
“资源被解释为脚本,但使用 MIME 类型 text/html 传输:"http://localhost:9090/d3/d3.min.js"。未捕获的 SyntaxError: Unexpected token
我的代码有两个库,socket.io 和 d3。 Node 将 socket.io 库返回给浏览器,但是当请求 d3 时,node 会返回网页。我显然不明白如何配置东西来完成这项工作。 (为什么 node 知道如何服务 socket.io 而不是 d3?)谢谢!
代码如下:
test_app.js:
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
, watch = require('watch')
, d3 = require('d3')
app.listen(9090);
function handler (req, res) {
fs.readFile(__dirname + '/test_socket.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading the html file');
}
//res.writeHead(200);
res.writeHead(200,{'Content-Type':'text/html'});
res.end(data);
});
}
test_socket.html:
<html>
<head>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript" src="../d3/d3.min.js"></script>
</head>
<script>
var socket = io.connect('http://localhost:9090');
socket.on('hi there now', function (data) { // message received from server
console.log(data);
socket.emit('my other event', { my: 'data' }); // talk back to server?
});
</script>
<body>hello</body>
</html>
【问题讨论】:
-
使用浏览器网络控制台查看实际的 HTTP 响应是什么样的。它可能是 404 页面或其他内容。
-
谢谢,好主意,但它是 200
-
好的,但是响应的实际内容是什么?
-
好的,你的问题有帮助。我检查了对 d3 请求的响应内容,它不是库,而是实际的网页(test_socket.html)。我已经相应地编辑了我的问题。谢谢。
标签: javascript node.js d3.js socket.io