通过node.js HTTP服务器将js和其他文件提供给HTML

making js and other files available to html via node.js http server

本文关键字:js 文件 HTML 其他 node HTTP 服务器 通过      更新时间:2023-09-26

我有一个非常简单的web服务器,像这样:

var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/html' });
  fs.readFile('./index.html', 'utf-8', function (err, content) {
    if (err) {
      res.end('something went wrong.');
      return;
    }
    res.end(content);
  });
}).listen(8080);
console.log("Server running on port 8080.")

这会使我的index.html没有任何问题,但是如果我试图通过脚本标记引用index.html中的另一个文件,例如,网站就会卡住,无法找到存在于服务器目录中的文件。

如何使这些文件可用于我的index.html文件?

请记住,我意识到这可以更容易地完成Express,但我不希望使用Express。我在努力了解幕后的运作方式。提前感谢。

您需要使该目录对公众可见。在开发Node.js应用程序时,建议使用框架。

下面的代码用于不带框架的服务器文件。

var basePath = __dirname;
var http = require('http');
var fs = require('fs');
var path = require('path');
http.createServer(function(req, res) {
    var stream = fs.createReadStream(path.join(basePath, req.url));
    stream.on('error', function() {
        res.writeHead(404);
        res.end();
    });
    stream.pipe(res);
}).listen(9999);

参考:Node本身可以提供静态文件而不需要express或任何其他模块…?