purpleladydragons
purpleladydragons

Reputation: 1305

Using non-inline javascript in HTML via node.js

I'm very new to node.js so I apologize if this is a poor question. I have a simple HTTP server here:

var http = require('http');

http.createServer(function (request, response){

    response.writeHead(200, {"Content-Type":"text/html"});
//  response.write("<html><head><script type = 'text/javascript'>alert('hello');</script></head></html>");
    response.write("<html><head><script type = 'text/javascript' src = 'alerter.js'></script></head></html>");
    response.end();
}).listen(8000);

console.log("Server has started.");

alerter.js contains the one line:

alert("hello");

Why does using the commented-out line properly cause an alert, but calling alerter.js does nothing?

Upvotes: 2

Views: 249

Answers (2)

ebohlman
ebohlman

Reputation: 15003

Your problem, as Paul and Timothy pointed out, is that when the browser gets your html with an external reference, it goes back to the server and asks it for alerter.js, expecting to have the script delivered to it. However, your server always sends out the same thing regardless of what the request asks for, so the browser never gets the script.

You need to change your server to, at the very least, handle a request for alerter.js. Realistically, I'd use something like Connect's static file handler to do that; put all the assets like scripts, stylesheets and images in a directory (usually called "public") and tell the static handler to serve them from there.

Upvotes: 4

TylerH4
TylerH4

Reputation: 473

You are missing a ' to end the type attribute.

Upvotes: 3

Related Questions