[英]how to include external script in html file that is used as response in nodejs server
标题可能很混乱,所以我用我的代码解释一下这是我的Nodejs服务器(“server.js”)代码:
var http = require('http');
var fs = require('fs');
var fserver = function (req, res) {
fs.readFile('hieu.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
};
http.createServer(fserver).listen(8080);
这是我的 hieu.html 文件:
<html>
<body>
<script src="check.js">
</script>
<p> a line </p>
<script>
var table = document.createElement("table");
for (var i = 0; i < 10; i++) {
var tr = document.createElement('tr');
for (var j = 0; j < 10; j++) {
var td = document.createElement("BUTTON");
if(i%2 == j%2) td.appendChild(document.createTextNode("B"));
else td.appendChild(document.createTextNode("W"));
tr.appendChild(td);
}
table.appendChild(tr);
}
document.body.appendChild(table);
</script>
<p> hieudzvkl </p>
</body>
</html>
我的 check.js 文件只是一行将数字 5 写入文档的代码。
如果我只是运行 hieu.html 文件,我会得到:
然而,如果我运行 ("server.js") 代码,我会得到:
如您所见,脚本src ="check.js"
没有出现在 res 中。
我不明白为什么会发生这种情况。 有什么办法可以解决这个问题吗? 提前致谢!
当您从 nodeJS 检索 html 文件时,浏览器将指向网络服务器上的一个位置(在这种情况下,它显示在端口 8080 上)。 html 文件引用的任何其他资源也将从该位置获取,除非它们是绝对 URL。 所以这里发生的事情是你的浏览器试图从与 html 文件相同的位置获取check.js
,换句话说,从网络服务器。 您必须更新您的 nodeJS 代码,以便它了解如何同时提供hieu.html
文件和check.js
文件。
考虑向server.js
代码添加类似于以下内容的逻辑:
var http = require('http');
var fs = require('fs');
var fserver = function (req, res) {
if (req.url === '/check.js') {
// Insert Code here, such as...
fs.readFile('check.js', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/javascript'});
res.write(data);
res.end();
});
} else {
fs.readFile('hieu.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
}
};
http.createServer(fserver).listen(8080);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.