2016-12-24 12 views
1

私はnode.jsを非常に使い慣れています。私は、応答するためにJavaScriptファイルtest.jsへの参照を持っているindex.htmlという名前のHTMLファイルを記述しようとしています:node.jsのスクリプトにhtmlページを書き込むには?

<!-- Content of index.html --> 
<html> 
    <head> 
    <script src="test.js"></script> 
    </head> 

    <body> 
    <h2>Hello</h2> 
    </body> 
</html> 

のみ1行ノードを使用して、私のtest.js

console.log("asdf") 

にありindex.htmlを表示するための.jsは、私はを入力しmain.js

let http = require("http") 
let fs = require("fs") 
let hostname = "127.0.0.1" 
let port = 3000 

let server = http.createServer((request, response) => { 
    fs.readFile("./index.html", (error, html) => { 
    response.statusCode = 200; 
    response.setHeader("Content-Type", "text/html") 
    response.write(html) 
    response.end() 
    }) 
}) 

次書きました端末には、ブラウザにはhttp://127.0.0.1:3000/と入力します。コンソールは例外が

キャッチされないでSyntaxError言って示しています。予期しないトークン<

それはブラウザがtest.js間違って持っていることが判明しました。下の画像に示すように、ブラウザはtext.jsに内容がindex.htmlと考えているようです。何が悪かったのか

enter image description here

言及したすべてのファイルは、次のように編成されています。

. 
├── index.html 
├── main.js 
└── test.js 
+0

'test.js'の内容を表示できますか?あなたはそこに普通の 'HTML'タグを持つことはできません。 – ishmaelMakitla

+0

'test.js'、' console.log( "asdf") '、@ishmaelMakitlaに1行しかありません。 –

+0

' DOCTYPE'宣言を含めて試しましたか? ''を閉じるときに '/'をエスケープしましたか?応答テキストを返すとき? – guest271314

答えて

3

サーバーに関係なく、ブラウザが求めているものindex.htmlの内容を送信されません。以下は、index.htmltest.jsのリクエストをどのように処理するかを示す冗長な例です。

let server = http.createServer((request, response) => { 
    if(request.url === '/' || request.url === '/index.html') { 
    fs.readFile("./index.html", (error, html) => { 
     response.end(html); 
    }); 
    } else if(request.url === '/test.js') { 
    fs.readFile("./test.js", (error, js) => { 
     response.end(js); 
    }); 
    } else { 
    response.end('idk what to send u, sowie'); 
    } 
}); 

あなたは、コードの繰り返しの一部を見ることができるように!コードをリファクタリングして、「要求している正確なファイルを提供してください。ファイルを読み込んだときにエラーが発生した場合、存在してはいけません。したがって、404応答を送信します」。

関連する問題