2016-12-24 96 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响应。”

相关问题