【发布时间】:2014-11-26 12:50:08
【问题描述】:
我有以下文件位置:
file:///Users/MyName/Developer/sitename/scripts (contains all .js files..)
file:///Users/MyName/Developer/sitename/css (contains all .css files..)
file:///Users/MyName/Developer/sitename/images (contains all .jpg/png/etc. files..)
file:///Users/MyName/Developer/sitename/sitename.html
file:///Users/MyName/Developer/sitename/server.js
在sitename.html 中,我加载了所有必要的文件,例如:
<html>
<head>
<script src="scripts/somefile.js"></script>
</head>
...
</html>
所以每当我打开file:///Users/MyName/Developer/sitename/sitename.html 时,一切正常。
但是,每当我尝试通过我设置的本地 Node.js 服务器(服务器文件位置:file:///Users/MyName/Developer/sitename/server.js)加载 file:///Users/MyName/Developer/sitename/sitename.html 时,如下所示:
var http = require("http");
var fs = require("fs");
fs.readFile('./sitename.html', function (err, html)
{
if (err) throw err;
http.createServer(function (request,response)
{
// serve site
if (request.url === "/")
{
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
}
response.end();
}).listen(8080);
});
sitename.html 已找到并已加载,但所有其他应该通过它加载的文件都无法加载,因为它们都被赋予了前缀 http://localhost:8080/(例如,http://localhost:8080/scripts/somefile.js 不是有效的文件路径)。
看起来只要创建服务器(在http.createServer(.....); 内),上下文就会发生变化,父目录现在变为http://localhost:8080/ 而不是file:///Users/MyName/Developer/sitename/,我猜这很有意义,但在使用以下文件时不是很有帮助仍然存储在本地。
我该如何解决这个问题?我将server.js(暂时)存储在同一个目录中这一事实是否会让事情变得更加混乱?
谢谢!
【问题讨论】:
标签: html node.js localhost relative-path file-location