如何使用脚本编写html页面以在node.js中进行响应?

我对node.js很新。 我正在尝试写入响应一个名为index.html的HTML文件,该文件引用了一个JavaScript文件test.js

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

在我的test.js只有一行

 console.log("asdf") 

现在,要使用node.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() }) }) 

我在terminal中input了node main.js ,并在浏览器中input了http://127.0.0.1:3000/ 。 控制台显示一个exception说

未捕获的SyntaxError :意外的标记<

事实certificate,浏览器得到了错误的test.js 如下图所示,浏览器认为text.js包含index.html的内容。

在这里输入图像说明

什么地方出了错?

所有提到的文件都按以下方式组织:

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

您的服务器正在发送index.html的内容,而不pipe浏览器的要求是什么。 下面是一个详细的例子,你可能想要处理index.html vs test.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响应。”