如何使用脚本编写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响应。”