内部脚本和样式表总是指向索引文件(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
了一个相当不错的独立静态文件