2016-12-24 49 views
1

我對node.js很新。我試圖寫入響應命名index.html一個HTML文件,其中有一個JavaScript文件test.js參考:現在如何使用腳本編寫html頁面以在node.js中進行響應?

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

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

只有一個在我test.js

console.log("asdf") 

線,使用節點.js文件顯示index.html,我寫了下面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() 
    }) 
}) 

我進入node main.js在終端中,並在瀏覽器中鍵入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 –

+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響應。」

相關問題