内部脚本和样式表总是指向索引文件(Node.JS)

这真是奇怪的问题。 我刚刚在我的系统(Fedora)上安装了Node.JS。

我在/ var / www / mirror /中有三个文件:

  • server.js
  • client.js
  • 的index.html

文件server.js是我通过CLI调用的: node server.js

它基本上返回index.html

 var http = require('http'), io = require('socket.io'), fs = require('fs'); http.createServer(function(request, response) { fs.readFile(__dirname + '/index.html', function(error, data) { if (error) { result.writeHead(500); console.log('Error: Could not read index.html.'); } response.writeHead(200, {'Content-Type': 'text/html'}); response.end(data); }); }).listen(1337, '127.0.0.1'); console.log('Server is running.'); 

所有按预期工作,并没有任何错误抛出任何地方。

index.html中,我有简单的HTML5结构(没有必要,真的!)和指向已经提到的client.js的 <script />

这行代码看起来像这样(Ctrl + U;从浏览器):

<script src="client.js"></script>

通过在client.js上移动光标,我得到了实际的位置: http://127.0.0.1:1337/client.js : http://127.0.0.1:1337/client.js : client.js

似乎是正确的,对不对?

问题:

通过打开该链接打开想要的文件,但内容是作为server.js应该返回。

这不允许我包含任何内部脚本和样式表!

我想通过http://127.0.0.1:1337/ (也是http://127.0.0.1:1337/a/b/c等) )通过server.js来处理 – server.js返回index.html (见上文)。

我该如何解决? 谢谢你的任何build议!

看看req.url来告诉你用户正在请求的url。 从那里,你必须有一些代码决定是否服务index.html或client.js。

此外,因为我猜index.html不是很频繁地更改,你应该只读一次,并将缓冲区存储在一个variables,而不是每个请求读取它。

有一些模块,使服务静态文件更容易一些。 检查filed了一个相当不错的独立静态文件