这是我的Javascript代码......
var http = require ('http');
var fs = require('fs');
var port = '2405';
function send404Response(response){
response.writeHead(404, {"Content_Type": "text/plain"});
response.write("Error 404: Page not found!");
response.end();
}
function onRequest(request,response){
if(request.method == 'GET' && request.url == '/'){
response.writeHead(200, {"Content-Type": "text/html"});
fs.createReadStream("./index.html").pipe(response);
} else{
send404Response(response);
}
}
http.createServer(onRequest).listen(port);
console.log("Server is now running...");
当我在终端中编写节点/Users/SurajDayal/Documents/ass2/app.js并转到http://localhost:2405/时,终端会出错....
events.js:160 扔掉//未处理的错误'事件 ^
错误:ENOENT:没有这样的文件或目录,打开' ./ index.html' 在错误(本机)
目录结构:
答案 0 :(得分:1)
您可能正在从另一个目录启动您的应用程序。此处./index.html
的相对路径将相对于当前工作目录。
如果您想相对于当前正在运行的文件,请尝试__dirname
:
fs.createReadStream(__dirname + '/index.html').pipe(response);
此外,如果您需要为HTTP服务执行更复杂的操作,请查看Express。有一个很好的静态文件模块,但它也是一个很好的实用程序,用于路由和HTTP应用程序所需的其他常用功能。
答案 1 :(得分:0)
使用
var path = require('path');
fs.createReadStream(path.join(__dirname, "index.html")
您的版本不起作用,因为相对路径是相对于当前工作目录(启动节点时控制台中的当前目录),而不是相对于脚本文件。
__dirname
给出当前脚本文件的目录。