Javascript Node.JS上的静态Web部署,不使用任何框架

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

在我的本地机器上,我希望在节点上部署静态网页(包含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.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仍然没有响应。请看以下问题:。可能端口被阻塞或类似的情况?