Javascript Node.JS上的静态Web部署,不使用任何框架
在我的本地机器上,我希望在节点上部署静态网页(包含HTML、CSS、JS文件),而不使用任何框架(例如Express)。我确实将网页相关文件放入了公用文件夹,然后使用节点中的fs库调用index.html,如下所示:Javascript Node.JS上的静态Web部署,不使用任何框架,javascript,node.js,Javascript,Node.js,在我的本地机器上,我希望在节点上部署静态网页(包含HTML、CSS、JS文件),而不使用任何框架(例如Express)。我确实将网页相关文件放入了公用文件夹,然后使用节点中的fs库调用index.html,如下所示: var http = require('http'), fs = require('fs'); fs.readFile('./public/index.html', function (err, html) { if (err) { throw err;} http.cr
var http = require('http'), fs = require('fs');
fs.readFile('./public/index.html', function (err, html) {
if (err) { throw err;}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html); response.end();
}).listen(1337, '127.0.0.1');;
});
我使用了CURL,所有文件(HTML、CSS、JS)实际上都部署在本地主机上。但是,当我转到localhost上的端口1337时,它显示HTML内容,但不显示在index.HTML中导入的用JS编写的行为 您的index.html文件正在向
index.js
(或js文件的名称)发出单独的请求。您的服务器将以相同的方式处理每个响应:提供index.html
文件的内容
以这种方式创建服务器不会像其他服务器(如Apache)那样自动为文件系统中的文件提供服务。相反,您需要执行以下操作:
http.createServer(function(request, response) {
if (request.url == "/index.html" || request.url == "/") {
response.writeHeader(200, {"Content-Type": "text/html"});
fs.createReadStream("./public/index.html").pipe(response);
}
else if (request.url == "/index.js") {
response.writeHeader(200, {"Content-Type": "text/javascript"});
fs.createReadStream("./public/index.js").pipe(response);
}
}).listen(1337, '127.0.0.1');
当然,为您要服务的文件系统中的每个文件编写路由可能非常愚蠢。您可以使用静态文件服务器,也可以自己实现静态文件服务器。这将涉及根据请求URL检查文件系统,然后使用您可以查找的正确内容类型提供文件。您的服务器设置在端口1337上,而不是80上。您访问了正确的端口吗?请转到@Sirko抱歉,端口号有误,但我仍然无法了解该行为(写入公共目录中的JS文件)。@ExplosionPills更新了问题。简而言之,JS仍然没有响应。请看以下问题:。可能端口被阻塞或类似的情况?