我正在使用nodeJS提供一些html,但我希望能够调用javascript文件中的函数,我试图将其链接起来。但是,我收到错误消息Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:8888/index.js"
。我不确定哪些内容无法正常链接,需要一种方法来链接我的文件index.js
。我试图做的是将文件加载到头部,如下所示:
http = require('http'),
http.createServer(function(req, res) {
var body = '<html>'+
'<head>'+
'<script src="index.js"></script>'+
'<meta http-equiv="Content-Type" content="text/html; '+
'charset=UTF-8" />'+
'</head>'+
'<body>'+
'</body>'+
'</html>';
response.writeHead(200,{"Content-Type":"text/html"});
response.write(body);
response.end();
}
}).listen(8888);
如何加载此javascript文件index.js
,以便index.js
中包含的所有功能都可在客户端使用?
答案 0 :(得分:2)
创建一个新的index.html
页面,而不是对其进行硬编码 - 在其中包含脚本文件并提供index.html
。
var http = require('http');
var fs = require('fs');
http.createServer(function(req, res) {
if(req.url == '/index.html') {
var file = __dirname + '/index.html'; //this index.html contains script tag
var stat = fs.statSync(file);
res.writeHead(200, {
'Content-Type': 'text/javascript',
'Content-Length': stat.size
});
var readStream = fs.createReadStream(file);
readStream.pipe(res);
// Send default page
}
}).listen(8888);
答案 1 :(得分:1)
index.js
的请求与/
的响应相同。
只处理这种情况的简单解决方案是:
var http = require('http');
var fs = require('fs');
http.createServer(function(req, res) {
// Send index.js
if(req.url == '/index.js') {
var file = __dirname + '/index.js';
var stat = fs.statSync(file);
res.writeHead(200, {
'Content-Type': 'text/javascript',
'Content-Length': stat.size
});
var readStream = fs.createReadStream(file);
readStream.pipe(res);
// Send default page
} else {
var body = '<html>'+
'<head>'+
'<script src="index.js"></script>'+
'<meta http-equiv="Content-Type" content="text/html; '+
'charset=UTF-8" />'+
'</head>'+
'<body>'+
'</body>'+
'</html>';
res.writeHead(200,{"Content-Type":"text/html"});
res.write(body);
res.end();
}
}).listen(8888);