Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.

By tonysziklai
This may be an insanely stupid question, even for a node.js newbie. I set up a droplet running 64-bit Ubuntu and installed all of the requisite Node.js packages. I am building a chatroom application using the Node.js in Action book. For this project, I created an HTTP server for serving static content. For some reason, I am able to hit the server over port 3000 (and get a 404 error message), but I can’t seem to serve the static content that I created in the public directory (i.e. index.html file). Below is the server and the index.html file. Can anyone give me a clue why the content is not being served? Assume all the files are in their correct directory locations on the server.
Server:
var http = require(‘http’); var fs = require(‘fs’); var path = require(‘path’); var mime = require(‘mime’); var cache = {};
function send404(response) { response.writeHead(404,{‘Content-Type’: ‘text/plain’}); response.write(‘Error 404: resource not found.’); response.end(); } function sendFile(response, filePath, fileContents) { response.writeHead( 200, {“content-type”: mime.lookup(path.basename(filepath))} ); response.end(fileContents); }
function serveStatic(response, cache, absPath) { if (cache[absPath]) { sendFile(response, absPath, cache[absPath]); } else { fs.exists(absPath, function(exists) { if (exists) { fs.readFile(absPath, function(err, data) { if (err) { send404(response); } else { cache[absPath] = data; sendFile(response, absPath, data); } }); } else { send404(response); } }); } }
var server = http.createServer(function(request,response) { var filePath = false; if (request.url == ‘/’) { filepath = ‘public/index.html’; } else { filePath = ‘public’ + request.url; } var absPath = ‘./’ + filePath; serveStatic(response, cache, absPath); });
server.listen(3000, function() { console.log(“Server listening on port 3000.”); });
Index.html file
<!DOCTYPE html> <html lang=“en”> <head> <title>Chat</title> <link rel=“stylesheet” href=“/stylesheets/style.css”><link> </head> <body> <div id=“content”> <div id=“room”></div> <div id=“room-list”></div> <div id=“messages”></div>
<<form id=“send-form”> <input id=“send-message” /> <input id=“send-button” type=“submit” value=“Send” />
<div id='help'>
Chat commands:
<ul>
<li>Change nickname: <code>/nick [username]</code></li>
<li>Join/create room: <code>/join [room name] </code></li>
</ul>
</div>
</form> </div>
<script src=“socket.io/socket.io.js” type=“text/javascript”></script> <script src=“http://code.jquery.com/jquery-1.8.0.min.js"type="text/javascript”></script> <script src=“/javascripts/chat.js” type=“text/javascript”></script> <script src=“/javascripts/chat_ui.js” type=“text/javascript”></script> </body> </html>