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

时间:2016-09-24 15:42:14

标签: javascript node.js http

我有一个非常简单的网络服务器:

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。我正在努力了解事情背后的情况。提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要将目录显示为public。建议在开发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 itself can serve static files without express or any other module..?